Как вы перечисляете все док-контейнеры, присутствующие в вашей системе?
Есть два способа сделать это:
Позвольте нам быстро перечислить команды с наиболее распространенными примерами для вашего быстрого ознакомления.
команда ps | команда container | команда displays |
---|---|---|
docker ps | docker container ls | бегущие контейнеры |
docker ps -a | docker container ls -a | все контейнеры |
docker ps -f “status = exited” | docker container ls -f “status = exited” | остановленные контейнеры |
docker ps -q | docker container ls -q | ID запущенных контейнеров |
docker ps -l | docker container ls -l | последний созданный контейнер |
Как вы можете видеть, как команды ps и container совпадают с их вариантами.
Однако, поскольку docker хочет правильно организовать команды, они рекомендуют использовать команду docker container ls.
По этой причине мы будем использовать команду docker container ls в подробных примерах.
Без каких-либо опций вы увидите только запущенные контейнеры.
docker container ls
Вывод подробный:
destroyer@andreyex:~$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f03e48cb07ea ubuntu "bash" 8 seconds ago Up 6 seconds ubuntu-c-1 93f84eb0f579 alpine "/bin/sh" 23 seconds ago Up 22 seconds alp_con2
Если вы впервые видите этот вывод, позвольте нам объяснить различные элементы вывода:
Если вы хотите увидеть все контейнеры в вашей системе, используйте опцию -a.
docker container ls -a
Вот пример вывода, и вы можете видеть, что теперь он также показывает несколько остановленных контейнеров.
destroyer@andreyex:~$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f03e48cb07ea ubuntu "bash" 37 minutes ago Up 37 minutes ubuntu-c-1 93f84eb0f579 alpine "/bin/sh" 37 minutes ago Up 37 minutes alp_con2 1c1c04a84186 alpine "bash" 38 minutes ago Created alp_con 6fbc4bf4897b ubuntu "/bin/bash" 2 hours ago Exited (0) 2 hours ago fervent_hofstadter 8b9565ba7661 alpine "/bin/sh" 2 hours ago Exited (0) 2 hours ago beautiful_williamson 853e748608bc hello-world "/hello" 2 hours ago Exited (0) 2 hours ago stoic_engelbart
Если вы хотите перечислить только остановленные контейнеры, вы можете отфильтровать вывод по состоянию exited.
docker container ls --filter "status=exited"
Вот отфильтрованный вывод:
destroyer@andreyex:~$ docker container ls --filter "status=exited" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6fbc4bf4897b ubuntu "/bin/bash" 2 hours ago Exited (0) 2 hours ago fervent_hofstadter 8b9565ba7661 alpine "/bin/sh" 2 hours ago Exited (0) 2 hours ago beautiful_williamson 853e748608bc hello-world "/hello" 2 hours ago Exited (0) 2 hours ago stoic_engelbart
Состояние exited для остановленных контейнеров. Есть еще несколько статусов для контейнеров, которые вы можете использовать для различных целей:
Фактически, фильтрация не ограничена статусом, вы можете фильтровать на основе других элементов вывода списка контейнеров, таких как идентификатор контейнера, имя или изображение. В следующем примере используется эта концепция.
Вы можете использовать фильтры для отображения всех контейнеров, связанных с определенным изображением, только с помощью фильтра ancestor.
docker container ls -a --filter "ancestor=image_name"
Вот вывод, который отображает все контейнеры, связанные с образом док-станции Alpine Linux.
destroyer@andreyex:~$ docker container ls -a --filter "ancestor=alpine" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 93f84eb0f579 alpine "/bin/sh" 48 minutes ago Up 48 minutes alp_con2 1c1c04a84186 alpine "bash" 49 minutes ago Created alp_con 8b9565ba7661 alpine "/bin/sh" 2 hours ago Exited (0) 2 hours ago beautiful_williamson
Вы заметили, что все вышеперечисленные команды имеют подробный вывод для контейнеров?
Если вам не нужна дополнительная информация, такая как имя контейнера, связанное изображение, его статус, вы можете использовать тихую опцию -q.
Например, если мы используем опцию -q в предыдущем примере, она дает мне только идентификаторы всех контейнеров, связанных с Alpine Linux.
destroyer@andreyex:~$ docker container ls -a -q --filter "ancestor=alpine" 93f84eb0f579 1c1c04a84186 8b9565ba7661
Это удобно в таких ситуациях, как удаление всех контейнеров из образа докера.