Как вы перечисляете все док-контейнеры, присутствующие в вашей системе?
Есть два способа сделать это:
- Использование команды docker ps (старый и популярный метод)
- Использование команды docker container (более новый и менее известный метод)
Позвольте нам быстро перечислить команды с наиболее распространенными примерами для вашего быстрого ознакомления.
команда 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
Если вы впервые видите этот вывод, позвольте нам объяснить различные элементы вывода:
- Container ID – Уникальный числовой идентификатор для идентификации контейнера
- Image – Образ Docker, который создал контейнер
- Command – команда по умолчанию, которая выполняется при запуске контейнера
- Created – Относительное время, когда был создан контейнер
- Status – Состояние контейнера (будет объяснено позже)
- Ports – Опубликованы порты контейнера
- Name – Название контейнера. Если ничего не указано, случайное имя присваивается в любом случае.
Список всех контейнеров докеров
Если вы хотите увидеть все контейнеры в вашей системе, используйте опцию -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 для остановленных контейнеров. Есть еще несколько статусов для контейнеров, которые вы можете использовать для различных целей:
- created – Контейнер, который был создан, но не запущен
- restarting – контейнер в процессе перезапуска
- running – Бегущий контейнер
- paused – контейнер, процессы которого были приостановлены
- exited – остановленный контейнер
- dead – Контейнер, который пытались остановить, но не удалось
Фактически, фильтрация не ограничена статусом, вы можете фильтровать на основе других элементов вывода списка контейнеров, таких как идентификатор контейнера, имя или изображение. В следующем примере используется эта концепция.
Показать контейнеры, связанные с изображением
Вы можете использовать фильтры для отображения всех контейнеров, связанных с определенным изображением, только с помощью фильтра 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
Это удобно в таких ситуациях, как удаление всех контейнеров из образа докера.