15 команд Docker для управления контейнерами [список, остановка, запуск, удаление и многое другое]
Опубликовано: 2021-08-17Docker — популярный инструмент для создания и запуска контейнерных приложений. Он доступен для нескольких платформ и используется в качестве одной из внутренних контейнерных технологий в Kubernetes.
В Docker вы либо создаете свои собственные образы для запуска своего приложения в качестве контейнера, либо можете извлекать и использовать тысячи общедоступных образов из репозитория Docker и использовать их в своем проекте. Как только ваш образ будет готов, вы можете запускать свои контейнеры, используя эти образы. Контейнер — это работающий экземпляр образа Docker.
Управление контейнерами Docker — один из наиболее важных аспектов, о котором должен заботиться системный администратор, управляющий хостами/контейнерами Docker.
В этой статье мы сосредоточимся на управлении контейнерами с помощью команды docker.
Команда Run
Команда docker run
используется для запуска контейнера из образа путем указания Image ID
или имени Repository
и/или Tag
.
$ docker run {image}
Пример:
$ docker run nginx
Приведенная выше команда запускает экземпляр приложения <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span>
на узле докера, если он уже существует. Если его нет на хосте Docker, он обращается к концентратору Docker (по умолчанию) и извлекает образ. Но это делается только первый раз. В последующие разы повторно используется одно и то же изображение.
Если вы хотите запустить определенную версию образа, укажите ее версию через двоеточие. Это известно как Tag
. Если вы не укажете какой-либо тег, докер по умолчанию будет считать его последним.
Кроме того, если вы хотите запустить контейнер в фоновом режиме в автономном режиме, чтобы вернуться к подсказке после того, как Docker запустит контейнер, используйте флаг -d
.
Пример:
$ docker run nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 33847f680f63: Pull complete dbb907d5159d: Pull complete 8a268f30c42a: Pull complete b10cf527a02d: Pull complete c90b090c213b: Pull complete 1f41b2f2bf94: Pull complete Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90 Status: Downloaded newer image for nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method 2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1 2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:13:23 [notice] 1#1: start worker processes 2021/08/15 12:13:23 [notice] 1#1: start worker process 33 2021/08/15 12:13:23 [notice] 1#1: start worker process 34
PS Команда
Команда docker ps
выводит список всех запущенных контейнеров и некоторую основную информацию о них. Например, идентификатор контейнера, имя образа, время создания контейнера, текущий статус и имя контейнера. Каждый контейнер получает случайное имя (если не указано явно) и идентификатор.
Пример:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion
Чтобы вывести список всех запущенных и не запущенных/закрытых контейнеров одновременно, вы можете использовать:
$ docker ps -a
Пример:
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fcec129f0eb4 nginx "/docker-entrypoint.…" 46 hours ago Exited (0) 46 hours ago interesting_ishizaka 6e8b1e441aa6 hello-world "/hello" 2 days ago Exited (0) 2 days ago keen_shirley
лс команда
Как и команду ps
, ls
также можно использовать для вывода списка контейнеров. Флаг -a
можно использовать для вывода списка всех контейнеров (а не только запущенных).
$ docker container ls
Пример:
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15796e91c30b redis "docker-entrypoint.s…" 2 seconds ago Up 1 second 6379/tcp flamboyant_neumann 904390b65d45 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp nginx_new $
команда остановки
Команда docker stop
используется для остановки работающего контейнера. Здесь нам нужно указать имя или идентификатор контейнера вместе с этим.
$ docker stop {container-id}
В случае успеха он вернет имя или идентификатор докера.
Пример:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion
Это вернет CONTAINER ID
, который вы можете использовать для остановки контейнера.
$ docker stop 133f5 133f5
Обратите внимание, что для этого и следующих примеров вам не нужно указывать полное значение CONTAINER ID
. Он будет принимать до части, что делает его уникальным среди других запущенных контейнеров, поскольку Docker знает, какой контейнер остановить.
команда rm
Команда docker rm
удаляет остановленный или закрытый контейнер.
$ docker rm {CONTAINER NAME or ID}
Пример:
$ docker rm 133f5 133f5 $
команда выполнения
Мы можем использовать команду exec
, чтобы войти внутрь работающего контейнера. Это полезно для отладки запущенных контейнеров или выполнения некоторых действий внутри контейнера.

$ docker exec –it {container} {command}
Пример:
Предположим, вы хотите запустить оболочку bash
(при условии, что в образе есть доступный Bash, вы также можете использовать другие доступные оболочки) в контейнере с именем unruffled_meninsky
в интерактивном режиме, используйте:
$ docker exec –it unruffled_meninsky /bin/bash
Это должно приземлить вас внутри контейнера на оболочке bash
. Здесь флаг -i
обозначает интерактивный режим, а -t
- терминал. Если вы просто хотите выполнить одну или несколько команд и выйти из контейнера, вы можете использовать:
$ docker exec unruffled_meninsky cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 cd2eed4acf34
журналы Команда
В случае, если контейнер запущен в автономном режиме и мы хотим увидеть его журналы, мы можем использовать команду logs
для просмотра его журналов:
$ docker logs {CONTAINER NAME or ID}
Пример:
$ docker logs 7da6dcebaf9c /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method 2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1 2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:14:09 [notice] 1#1: start worker processes 2021/08/15 12:14:09 [notice] 1#1: start worker process 31 2021/08/15 12:14:09 [notice] 1#1: start worker process 32 $
ср команда
Чтобы скопировать файлы между контейнером и файловой системой localhost, вы можете использовать команду cp
.
$ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-
Пример:
$ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp
команда экспорта
Команда контейнера Docker предлагает возможность экспортировать файловую систему контейнера в виде файла TAR.
$ docker container export {CONTAINER NAME or ID}
проверить команду
Мы можем проверить подробную информацию о контейнере с помощью команды inspect
следующим образом:
$ docker inspect {CONTAINER NAME or ID}
ИЛИ ЖЕ
$ docker container inspect {CONTAINER NAME or ID}
убить команду
Работающий контейнер можно убить с помощью команды kill
с необязательным --signal
или -s
. Можно указать несколько контейнеров, чтобы убить их за один раз.
$ docker kill {CONTAINER NAME or ID} [--signal VAL]
Пример:
$ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $
команда статистики
Чтобы отобразить прямую трансляцию использования ресурсов контейнера, вы можете использовать команду stats
:
$ docker container stats {CONTAINER NAME or ID}
Пример:
$ docker container stats thirsty_volhard CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 904390b65d45 thirsty_volhard 0.00% 3.406MiB / 7.775GiB 0.04% 1.02kB / 0B 0B / 8.19kB 3
верхняя команда
Как и команду top
в Linux, мы можем использовать ее с Docker для получения списка запущенных процессов.
$ docker container top {CONTAINER NAME or ID}
Пример:
$ docker container top thirsty_volhard UID PID PPID C STIME TTY TIME CMD root 2603 2582 0 12:34 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 2659 2603 0 12:34 ? 00:00:00 nginx: worker process systemd+ 2660 2603 0 12:34 ? 00:00:00 nginx: worker process $
переименовать команду
Чтобы переименовать существующий контейнер, используйте команду rename
.
$ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}
Пример:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_container $ docker container rename nginx_container nginx_new $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_new $
diff Команда
Мы можем проверить изменения в файлах или каталогах в файловой системе контейнера с помощью команды diff
.
$ docker container diff {CONTAINER NAME or ID}
Пример:
$ docker container diff nginx_new C /var C /var/cache C /var/cache/nginx A /var/cache/nginx/uwsgi_temp A /var/cache/nginx/client_temp A /var/cache/nginx/fastcgi_temp A /var/cache/nginx/proxy_temp A /var/cache/nginx/scgi_temp C /etc C /etc/nginx C /etc/nginx/conf.d C /etc/nginx/conf.d/default.conf C /run A /run/nginx.pid $
Резюме
В заключение Doker предлагает обширный набор команд для управления контейнерами от их создания до уничтожения. Мы рассмотрели некоторые важные команды и их использование в этой статье, которая должна дать вам хорошее представление об управлении контейнерами Docker.
Затем узнайте о некоторых ресурсах для изучения DevOps.