7.2 Основные команды Docker
1 из 4 шагов пройден

docker ps

Команда docker ps выводит список всех контейнеров, запущенных к настоящему моменту:

docker ps [options]


Напомню, что в каждом контейнере выполняется только один процесс. В данном примере нет ни одного запущенного контейнера, поэтому список пуст.


Попробуем выполнить команду ps с ключом –a, чтобы увидеть список всех контейнеров, даже не запущенных:

Как видите, после выхода из командной оболочки контейнер Ubuntu был остановлен и стал неактивным, но при этом он не был удален. При необходимости его можно повторно запустить.

 

docker restart

Команда docker restart перезапускает указанный контейнер: 

docker restart [options] container


Перезапустим контейнер Ubuntu, указав его идентификатор, который мы видели в примерах выше:


Если снова выполнить команду docker ps, мы увидим, что контейнер активен:

 

docker attach

Команда docker attach позволяет передать указанный активный контейнер под интерактивное управление или увидеть его стандартный вывод:

docker attach [options] container


Подключим контейнер ubuntu с идентификатором 8fe941401f91, чтобы получить возможность взаимодействовать с командной оболочкой в нем:

Как видите, приглашение к вводу появилось вновь, и мы можем продолжить работу.

Важно отметить, что мы всегда будем получать приглашение к вводу после каждого перезапуска контейнера. Это поведение по умолчанию нельзя изменить, потому что мы определили его, собрав контейнер с ключом --interactive в команде run. Конечно, мы можем запустить тот же образ Ubuntu с другими ключами и параметрами. В этом заключается особая прелесть Docker.

 

docker rm

Команда docker rm удаляет указанные контейнеры: 

docker rm [options] containers

Попробуем для примера удалить контейнер ubuntu. Перед удалением контейнер нужно остановить или передать команде rm ключ –f (force – принудительно), действие которого заключается в отправке сигнала SIGKILL процессу, выполняющемуся в контейнере:

docker stop [options] containers

Как видите, контейнер больше не выполняется. Он получил статус Exited (завершился) с кодом 137, который свидетельствует о том, что контейнер получил сигнал SIGKILL.

Команда stop сначала посылает сигнал SIGTERM, а затем, выждав некоторое время, сигнал SIGKILL. Период ожидания можно изменить, передав ключ –t с числом секунд. Эта возможность может очень пригодиться в случаях, когда требуется, чтобы процесс в контейнере успел завершить обработку запроса (например, запроса HTTP).

Также можно воспользоваться командой docker kill, которая немедленно посылает сигнал SIGKILL, но в этом случае процесс в контейнере не получит возможности завершиться обычным путем. Однако эта команда имеет ключ, позволяющий послать процессу в контейнере другой сигнал, отличный от SIGKILL.

Остановив контейнер, удалим его и вновь выполним команду ps –a:

Обратите внимание, что контейнер удален бесследно, а команда ps –a не обнаружила никаких напоминаний о нем.

 

docker exec

Команда docker exec позволяет удаленно выполнить другую команду в уже запущенном контейнере. 

docker exec [options] container command [arg...]


Создадим контейнер и запустим его через команду:

docker run -d --interactive --tty ubuntu sh

Мы добавили флаг -d для запуска контейнера в фоновом режиме.

Давайте попробуем выполнить эту команду в контейнере ubuntu:

docker exec dcf8cda72903 ls -a


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