Docker — это платформа для контейнеризации, которая позволяет быстро создавать, тестировать и развертывать приложения в виде переносимых самодостаточных контейнеров, которые могут работать практически везде. Это де-факто стандарт для развертывания контейнеров, и это важный инструмент для инженеров DevOps и их непрерывной интеграции и конвейера доставки.
В этой статье мы расскажем, как составить список контейнеров Docker.
Команда Docker для вывода списка контейнеров имеет следующий вид:
docker container ls [options]
Старые версии Docker до 1.13 используют другую команду для вывода списка контейнеров:
docker ps [options]
Приведенная выше команда все еще поддерживается в более новых версиях Docker, где команда ps является псевдонимом container ls.
Для просмотра списка запущенных контейнеров выполните команду docker container ls без каких-либо опций:
docker container ls
Вывод будет выглядеть примерно так:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c8bded53da86 postgres "docker-entrypoint.s…" 2 hours ago Up 2 hours 5432/tcp pg 571c3a115fcf redis "docker-entrypoint.s…" 4 hours ago Up 4 hours 6379/tcp cache 05ef6d8680ba nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 80/tcp web
Каждая строка вывода включает в себя следующие столбцы:
Если запущенных контейнеров нет, отображается только строка заголовка.
Опция -a, —all указывает docker container ls распечатать список всех контейнеров:
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b28cbaa91f15 couchbase "/entrypoint.sh couc…" 5 hours ago Exited (0) 3 hours ago db c8bded53da86 postgres "docker-entrypoint.s…" 2 hours ago Up 2 hours 5432/tcp pg 571c3a115fcf redis "docker-entrypoint.s…" 4 hours ago Up 4 hours 6379/tcp cache 05ef6d8680ba nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 80/tcp web
По умолчанию столбцы с длиной, превышающей указанный предел, усекаются. Используйте опцию —no-trunc, чтобы отключить усечение:
docker container ls --no-trunc
Чтобы отображались только идентификаторы контейнеров, передайте опция -q, —quiet:
docker container ls -q
c8bded53da86 571c3a115fcf 05ef6d8680ba
—format позволяет форматировать вывод, используя шаблон Go. Например, чтобы напечатать только имена и статус контейнеров, включая заголовок, который вы запустите:
docker container ls --format 'table {{.Names}}\t{{.Status}}'
NAMES STATUS pg Up 2 hours cache Up 4 hours web Up 2 hours
Используйте -s, —size для просмотра размера контейнеров:
docker container ls -s
Каждая строка будет содержать столбец с именем SIZE, который показывает размер контейнера:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE c8bded53da86 postgres "docker-entrypoint.s…" 2 hours ago Up 2 hours 5432/tcp pg 63B (virtual 394MB) 571c3a115fcf redis "docker-entrypoint.s…" 4 hours ago Up 4 hours 6379/tcp cache 0B (virtual 98.2MB) 05ef6d8680ba nginx "nginx -g 'daemon of…" 2 hours ago Up 2 hours 80/tcp web 2B (virtual 126MB)
Опция —last, -n указывает команде отображать n последних созданных контейнеров, включая все состояния. Например, для просмотра последних двух созданных контейнеров вы должны запустить:
docker container ls -n 2
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b28cbaa91f15 couchbase "/entrypoint.sh couc…" 5 hours ago Exited (0) 3 hours ago db c8bded53da86 postgres "docker-entrypoint.s…" 2 hours ago Up 2 hours 5432/tcp pg
Существует также возможность перечислить только последний созданный контейнер —latest, -l, который совпадает с -n 1:
docker container ls -l
Опция —filter, -f позволяет вам фильтровать выходные данные на основе определенных критериев. Например, чтобы просмотреть только контейнеры со статусом exited, вы должны запустить:
docker container ls -f "status=exited"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b28cbaa91f15 couchbase "/entrypoint.sh couc…" 5 hours ago Exited (0) 3 hours ago db
Список всех поддерживаемых фильтров можно найти в документации Docker.
Контейнер Docker — это автономный экземпляр образа во время выполнения.
Чтобы вывести список Docker-контейнеров, используйте команду docker container ls или ее псевдоним docker ps.
Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.