yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Как зайти в запущенный контейнер в Docker

Для поиска и отладки неисправностей, проверки настроек, запуска CLI, изменения конфигурационных файлов и анализа состояния приложения без остановки ПО зачастую нужен доступ внутрь работающего контейнера. Рассказываем, какие способы можно использовать без риска что-то «сломать» в изолированной среде.

Инструкции
Иллюстрация для статьи на тему «Как зайти в запущенный контейнер в Docker»
Продукты из этой статьи:
Иконка-Evolution Artifact Registry
Evolution Artifact Registry
Иконка-Evolution Container Apps
Evolution Container Apps
Иконка-Evolution Compute
Evolution Compute

Способы входа в контейнер Docker

Есть разные способы работать с запущенным контейнером. Они подходят для разовых команд и администрирования, отладки процессов. Разберем инструменты docker exec и docker attach, которые применяются чаще прочих. 

Применение docker exec

Это команда используется для работы с файлами, отладки, проверки логов, ручного запуска интерактивной оболочки и скриптов. Базовый синтаксис такой: 

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Ключевые опции команды: 

  • -i — активация режима ввода;

  • -t — подключение псевдотерминала, что полезно для запуска оболочки;

  • -d — фоновое выполнение задачи;

  • -u — запуск команды от имени конкретного пользователя; 

  • -e — назначение переменных окружения;

  • -w — определение директории для выполнения команды. 

Команда docker exec не перезапускает контейнер, не влияет на процессы внутри него. Она запускается дополнительно к этим процессам и прекращает работать, если контейнер останавливается. 

Этот способ работает не только с локальными контейнерами, но и с контейнерами, запущенными в облачных средах. Например, в сервисе Evolution Container Apps от Cloud.ru, где приложения работают в готовой облачной инфраструктуре на основе Docker-образов из приватного реестра Evolution Artifact Registry, команды docker exec и docker attach доступны точно так же, как и на локальной машине.

Примеры использования docker exec

Для анализа файловой системы, ручного запуска команд внутри контейнера и проверки конфигурации запустите интерактивную оболочку командой:

Пример для выполнения одной конкретной команды с последующим выходом из контейнера: 

Пример выполнения команды от пользователя root с правами администратора:

Чтобы посмотреть состояние базы данных, можно выполнить такую команду:

Команда, которая позволяет подключиться к клиенту базы данных:

Команда для проверки переменных окружения: 

Можно проверить и конкретную переменную, например:

Пример командыПример команды

Применение docker attach

Команда docker attach в отличие от docker exec не запускает новый процесс, а присоединяется к уже запущенному ключевому процессу контейнера. Базовый синтаксис выглядит так:

docker attach передает (проксирует) сигналы с вашего терминала в контейнер. Например, нажатие Ctrl+C отправит сигнал SIGINT основному процессу и может его остановить. Чтобы безопасно выйти из attach без остановки контейнера, используйте комбинацию Ctrl+P, затем Ctrl+Q (по умолчанию).

Есть смысл работать с docker attach, если контейнер функционирует в интерактивном режиме и выводит данные в стандартные потоки. Для выполнения разовых команд и отладки лучше применять docker exec

Evolution Artifact Registry
Evolution Artifact Registry
Храните и распространяйте артефакты безопасно
Узнать больше

Пример применения docker attach

Разберем пример пошагового алгоритма применения docker attach для подключения. Сначала нужно запустить контейнер в интерактивном режиме: 

Затем можно не останавливая контейнер выйти из терминала, чтобы перейти на работу в фоновом режиме:

Дальше нужно определить ID или имя контейнера:

Затем можно подключиться к активному процессу:

Пример командыПример команды

Сравнение docker exec и docker attach

Для наглядности сравним способы доступа в таблице:

Критерий
docker exec
docker attach
Суть
Запуск нового процесса внутри запущенного контейнера
Подключение к запущенному процессу внутри контейнера
Распространенные сценарии применения
Администрирование, отладка кода, настройка конфигурации, диагностика проблем
Управление интерактивным приложением и мониторинг
Преимущества
      Отсутствие влияния на основной процесс
      Применимость для продакшен-сред
      Изолированные сессии
      Возможность выполнять разные команды
      Прямое взаимодействие с процессом
      Применимость для интерактивных приложений
Минусы
      Отсутствие управления PID
      Создание отдельных процессов
      Отсутствие журналирования команд
      Риск случайной остановки контейнера при неосторожном использовании команд
      Неудобство для администрирования
      Высокие риски в продакшен-средах
Безопасный выход
Закрытие сессии
Ctrl+P и Ctrl+Q
Рекомендация
Главный инструмент доступа к работающему контейнеру
Стоит использовать только при необходимости

Доступ к контейнеру с помощью SSH

Для рутинной работы с контейнерами SSH не используется — этот способ подходит для специфических сценариев. Например, он применяется в таких случаях:

  • есть настроенный SSH-сервер;

  • вы работаете с legacy-приложениями;

  • контейнер используется в качестве изолированной виртуальной машины

  • нужен доступ без Docker-клиента, например, в учебных стендах или CI-окружениях.   

Если доступ по SSH необходим, убедитесь, что настроен SSH-сервер, запущен процесс sshd и проброшен SSH-порт. Пример подключения:

Использовать метод рискованно, поскольку он усложняет обновление образов, увеличивает поверхность атаки и нарушает принцип «один контейнер — один процесс».

Практические советы

При подключении к работающему контейнеру могут возникнуть проблемы и риски, которые нужно осознавать и устранять. Подсказываем простые решения.

Устранение ошибок 

Ошибки в основном связаны с неправильным выбором способа доступа и режима запуска контейнера. Типовые проблемы и варианты их решения:

  • Контейнер запущен, но подключение не удается. Проверьте статус с помощью docker ps -a и логи через docker logs. Если основной процесс «падает», ищите причину и только потом пытайтесь подключиться снова. 

  • Если контейнер останавливается сразу после вашего выхода, скорее всего, вы использовали docker attach и нажали Ctrl+C — в этом режиме комбинация передает сигнал остановки главному процессу внутри контейнера. Для безопасного отсоединения без остановки контейнера применяйте последовательность Ctrl+P, затем Ctrl+Q. В случае с docker exec такой проблемы не возникает: сессия завершается командами exit или Ctrl+D, не влияя на работу контейнера.

  • Команды внутри контейнера работают в разрез с ожиданиями. Это происходит из-за различия рабочих сред. Чтобы не было неожиданностей, заранее проверяйте переменные окружения, текущую директорию и пользователей. 

  • Отсутствие прав доступа. Это значит, что для нужного действия не хватает привилегий. Можно задать пользователя в Dockerfile либо в некоторых случаях работать от имени администратора. 

Учтите, что при пересборке контейнера будут утрачены изменения, сделанные через docker exec. Значимые правки следует фиксировать в Dockerfile и других файлах конфигурации.

Безопасность

Доступ к запущенному контейнеру — процесс, подразумевающий прямое влияние на рабочую среду. Чтобы не допустить ошибок, которые приведут к инцидентам ИБ, соблюдайте простые рекомендации: 

  • В продакшн-среде используйте docker exec. Команда не затрагивает основной процесс и снижает риски случайной остановки сервиса. 

  • Без необходимости не работайте под root. По возможности выполняйте процессы от имени непривилегированного пользователя. 

  • Фиксируйте «ручные» подключения. Это позволит при подозрении на инцидент установить, кто, зачем и когда заходил в контейнер. 

  • Минимизируйте доступ к Docker-хосту. Контроль полномочий и ограничение круга пользователей снижают риски несанкционированных действий. 

  • Избегайте интерактивного доступа на постоянной основе. Грамотная автоматизация поможет избежать частых «ручных» входов. 

Чтобы безопасно зайти в запущенный контейнер, заранее изучите теоретическую часть — как выполняются команды, как они влияют на приложение, от имени какого пользователя нужно действовать. 

Заключение 

Выбирайте способ доступа в зависимости от своих задач. Универсальный вариант — docker exec, который подходит для мониторинга, администрирования и отладки. Для интерактивной работы применяйте docker attach. Вне зависимости от выбранного способа не забывайте сохранять важные изменения в образе и соблюдать меры безопасности во избежание инцидентов ИБ. 

Продукты из этой статьи:
Иконка-Evolution Artifact Registry
Evolution Artifact Registry
Иконка-Evolution Container Apps
Evolution Container Apps
Иконка-Evolution Compute
Evolution Compute
18 марта 2026

Вам может понравиться