Как подключиться к контейнеру Docker

Сегодня мы продолжим говорить про управление контейнерами Docker и в этой статье я хочу рассказать о том как подключиться к контейнеру. Это можно сделать двумя способами. Либо при создании контейнера передав специальные опции команде docker run или к уже работающему контейнеру с помощью команды docker attach.

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

Как подключиться к контейнеру Docker

Дальше мы рассмотрим оба способа, но давайте начнём с создания контейнера. Подробнее об этом рассказано здесь. Чтобы сразу же после создания контейнера подключится к нему надо передать опции -it, а также указать основную программу контейнера, для работы в терминале нам понадобится /bin/bash. Опция -i указывает что надо работать интерактивно, а -t привязывает к контейнеру псевдоконсоль:

docker run -it ubuntu /bin/bash

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

docker run --name losst_ubuntu -it ubuntu /bin/bash

Теперь вы можете отключится от этого контейнера выполнив команду exit, а затем запустить его:

docker start losst_ubuntu

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

docker start -i losst_ubuntu

Если контейнер уже запущен и вы хотите подключится к терминалу, в который выводится вывод основной команды, используйте команду attach:

docker attach -i losst_ubuntu

Обратите внимание, что это не всегда будет командная строка, в которой можно выполнять команды. Так будет только если при создании контейнера главной программой была выбрана командная оболочка. Например, при запуске mysql вы увидите только вывод сервиса mysql:

docker run --name losst_mysql -e MYSQL_ROOT_PASSWORD=password -it mysql

Как вы понимаете, к такому контейнеру не получится подключится для выполнения команд выше описанным способом. Если мы переопределим основную программу mysql больше не будет выполняться и нам от контейнера будет мало толку. Для таких случаев существует команда exec. Она позволяет создать новую сессию и выполнить в ней любую команду, например, ту же командную оболочку. Если вы не знаете имя контейнера, его можно посмотреть командой docker ps:

docker ps

Если нужный вам контейнер сейчас не запущен используйте опцию -a. Обращаться к контейнеру можно по его имени, например, losst_mysql или по его идентификатору, например, ee81e6ea7373. К тому же если вы не задали имя вручную, то контейнер получит автоматически сгенерированное имя и оно тоже вполне читаемо. Например, пока контейнер losst_mysql работает мы можем к нему подключится:

docker exec -it losst_mysql /bin/bash

Если вы закроете эту сессию, с контейнером ничего не произойдёт, он не завершится, просто закроется текущая сессия. Так что это самый верный способ подключится к контейнеру Docker.

Выводы

В этой статье мы рассмотрели как подключится к контейнеру Docker для выполнения команд внутри контейнера или для того чтобы посмотреть вывод основной команды. Как видите, всё просто.

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (4 оценок, среднее: 4,75 из 5)
Загрузка...

Ответить

 Для отправки комментариев необходимо принять политику конфиденциальности - политика конфиденциальности