Самая распространенная команда Docker также является универсальной командой.
Узнайте о нескольких вариантах использования команды docker ps.
Одной из первых команд Docker, которую вы используете, является команда docker ps.
Она показывает запущенные контейнеры:
docker ps
На самом деле, выполнив эту команду, вы получите список запущенных контейнеров и их уникальный ID контейнера, имя образа, команду, которую он выполняет, время, прошедшее с момента запуска (uptime), и порты, которые он использует.
Но вы можете сделать немного больше.
Вы можете отображать остановленные контейнеры, фильтровать результат или просто отображать идентификаторы контейнеров.
Давайте рассмотрим эту важную команду Docker более подробно.
Команда docker ps3
В Docker есть алиас для отображения всех запущенных контейнеров.
Это подкоманда ps в Docker.
Она является псевдонимом команды docker container ls.
Которая, как вы можете догадаться, используется для вывода списка контейнеров docker.
Вот пример выполнения команды docker ps на моем компьютере:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
Как вы можете видеть, опция -a также показывает контейнеры, которые были остановлены.
Фильтруйте вывод команды docker ps для получения более точного результата
Команда docker ps имеет очень полезную опцию –filter (или сокращенно -f).
Как видно из названия опции, вы можете отфильтровать контейнеры по следующим полям:
id
name
label
exited
status
ancestor
since
volume
publish
health
isolation
Я создал контейнер с именем nextcloud_server.
Я хочу видеть подробную информацию о контейнерах, но только о тех, у которых нужное мне имя.
Давайте посмотрим, как использовать фильтр по имени.
$ docker ps --filter "name=nextcloud_server"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 3 hours ago Up 3 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
У меня запущено несколько контейнеров, но прохождение с использованием фильтра по имени показывает мне только те контейнеры, которые соответствуют имени.
Давайте попробуем использовать фильтр id.
У меня есть контейнер MariaDB с идентификатором “140161b8b139”. Для этого я использую следующую команду.
$ docker ps --filter "id=140161b8b139"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
140161b8b139 mariadb "docker-entrypoint.s…" 15 hours ago Up 15 hours 3306/tcp nextcloud_db
Показать контейнеры в порядке их создания
Да, вы можете вывести список контейнеров, отсортированных в порядке даты их создания, используя параметр –latest (или l для краткости).
Порядок будет следующим: самый новый – сверху, самый старый – снизу.
Вот примерный результат выполнения команды docker ps –latest на моем компьютере:
$ docker ps --latest
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 15 hours ago Up 15 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
73a6901a4846 lscr.io/linuxserver/transmission "/init" 16 hours ago Exited (137) 16 hours ago transmission_web
С этой командой есть несколько проблем.
- Любые контейнеры, которые используются как “зависимость”, не будут перечислены.
- Вывод включает все состояния контейнеров (это означает, что даже остановленные контейнеры будут перечислены).
Я создал контейнер “nextcloud_server” с MariaDB в качестве “зависимости”.
Поэтому этот контейнер не будет указан в выводе при использовании флага –latest.
Скрипт? Как показать только идентификаторы контейнеров
Предположим, вы пишете скрипт и хотите иметь дело только с идентификаторами контейнеров, чтобы вы могли выполнять действия над контейнерами.
Для этого вы можете использовать опцию –quiet (или -q для краткости).
Ниже приведен результат выполнения docker ps -q на моем компьютере.
$ docker ps -q
58c7013a49c3
140161b8b139
Как вы можете видеть, вывод состоит только из идентификаторов контейнеров (контейнеров, которые запущены) и ничего больше.
Как видите, команда Docker ps содержит больше возможностей, чем просто отображение информации о запущенных контейнерах.
Дайте мне знать, если вы узнали что-то новое или знаете другой полезный пример использования команды docker ps.
см. также:
- 🐳 Обновление патчей безопасности в контейнерах Docker
- ☸️ Как установить и настроить OWASP ZAP в Kubernetes или Docker
проще вместо
docker ps –filter “name=nextcloud_server”
писать
docker ps | grep nextcloud