Как вывести список контейнеров в Docker

Работая с приложениями в контейнерах, вам нередко придется выводить список контейнеров Docker, например, запущенных. Это помогает мониторить их состояние, эффективно использовать ресурсы, вовремя обнаруживать потенциальные источники проблем, балансировать нагрузку, организовывать размещение контейнеров, а также проверять, не появились ли неавторизованные или вредоносные контейнеры.

От редакции Techrocks: познакомиться с контейнерами Docker можно, почитав статью «Docker: объяснение на пальцах».

Как вывести список запущенных контейнеров

Предположим, вы создали много контейнеров. Одни запущены, другие остановлены. Если применить команду docker ps, по умолчанию будет выведен список только запущенных контейнеров.

Список запущенных контейнеров

Объяснение вывода

Выполнив команду docker ps, вы получите вывод, как на скриншоте выше. Это информация о каждом запущенном контейнере, разбитая на семь столбцов.

  1. Container ID. Этот столбец содержит идентификаторы запущенных контейнеров.
  2. Image. Образы, использованные для создания контейнеров.
  3. Command. Команды, выполненные в фоне для инициализации и запуска каждого контейнера.
  4. Created. Время создания контейнеров.
  5. Status. Текущее состояние каждого контейнера. Возможные значения — running, exited, paused, removing, restarting и т.д.
  6. Ports. Ко всем контейнерам привязаны порты. С их помощью вы можете обратиться к сервису внутри контейнера. Например, если порт хоста 8080 привязан к 80-му порту контейнера, вы сможете получить доступ к веб-контенту контейнера, введя http://localhost:8080 в браузере на своей локальной машине.
  7. Names. Уникальные имена всех запущенных контейнеров.
Столбцы вывода

Как вывести список всех контейнеров Docker

Если вы хотите увидеть информацию по всем контейнерам, нужно добавить к команде docker ps опцию -a. Так вы получите все запущенные, перезапущенные, приостановленные и остановленные контейнеры.

Сравнение вывода двух команд. В одном все контейнеры, а в другом только запущенные.

Чем отличаются запущенные и остановленные контейнеры в списке

Чтобы отличить запущенный контейнер от остановленного в выводе команды docker ps -a, нужно обратить внимание на столбец Status. Если там значится что-то вроде «up 3 hours», это означает, что контейнер запущен и работает уже 3 часа. А если там написано что-то типа «Exited 4 hours go», это значит, что контейнер был остановлен 4 часа назад.

Отличия запущенных и остановленных контейнеров в поле Status

Как вывести последние созданные контейнеры

Для вывода списка последних созданных контейнеров раньше использовалась команда docker ps -l, но теперь она устарела. Теперь для вывода последнего контейнера можно использовать команду docker ps -n 1. Число после n ограничивает количество выводимых контейнеров. То есть, если вам нужны пять последних контейнеров, нужно запустить команду docker ps -n 5.

Вывод списка последних контейнеров.

Зачем может понадобиться вывести список последних созданных контейнеров

Откат при возникновении проблем, связанных с последним обновлением

Предположим, вы регулярно устанавливаете новые обновления для своего контейнерного приложения, и после последнего обновления что-то пошло не так. В таком случае эта команда поможет вам легко определить контейнеры, созданные после последнего обновления, для немедленного отката к более старой версии.

Ограниченные ресурсы для развертывания контейнеров

Предположим, у вас ограниченные ресурсы (CPU, RAM, место на диске и т.д.) и вы хотите эффективно их распределить. Для этого вам нужно отслеживать ресурсы, используемые последними созданными контейнерами. Получив список самых новых контейнеров, вы сможете внести изменения в их конфигурацию для обеспечения эффективности.

Отключение усечения

При выполнении команды docker ps вы обнаружите, что в выводе значения нескольких столбцов обрезаются. Это затрудняет восприятие информации, особенно когда вам нужны полные идентификаторы контейнеров или имена образов.

Чтобы отключить усечение полей, нужно использовать команду docker ps -no-trunc.

Пример вывода после отключения усечения:

Вывод информации в усеченном и полном виде

Вывод списка только идентификаторов (тихий режим)

Очень часто из всего вывода команды docker ps вам нужны лишь идентификаторы контейнеров. Чтобы ограничить вывод, можно воспользоваться специальной командой — docker ps -q.

Вывод идентификаторов контейнеров

Сценарии, при которых требуются только идентификаторы контейнеров

Среда оркестровки

Большинство компаний применяют инструменты оркестровки, такие как Kubernetes и docker swarm. Эти инструменты часто используют идентификаторы контейнеров для управления и планирования.

Соединение контейнеров

В распределенной архитектуре мы обычно устанавливаем соединение между контейнерами для совместного использования ресурсов, сетевого подключения и масштабирования. А для этого нужно знать идентификаторы соединяемых контейнеров.

Просмотр размера контейнера

Как мы уже говорили ранее, наши ресурсы могут быть ограничены, поэтому нужно следить за использованием ресурсов каждым контейнером. Специальная команда — docker ps --size — позволяет вывести дисковое пространство, используемое каждым контейнером. Таким образом можно определить контейнеры, которые занимают много места на диске, и предпринять соответствующие действия.

Вывод дополнительного столбца с размером контейнеров

От редакции Techrocks: предлагаем также почитать «Как удалить образы Docker и освободить пространство».

Дополнительная колонка Size в выводе

Команда docker ps --size добавит дополнительный столбец в вывод списка контейнеров. В нем будут указаны фактический (общий) и виртуальный размер каждого контейнера.

Фактический размер. Это место, которое используется слоем контейнера, доступным для записи. Состоит из файловой системы контейнера и всех сделанных модификаций.

Виртуальный размер. Когда все слои контейнера разделены и не используются совместно, виртуальный размер — это общий объем необходимого дискового пространства. Это совокупный размер всех слоев контейнера, включающий любые общие ресурсы, базовые изображения и дополнительные слои.

Настройка вывода списка контейнеров

Предположим, вы хотите получить вывод списка контейнеров, который будет содержать только выбранный вами столбец. В этом случае вы можете использовать команду docker ps с опцией --format и строкой-шаблоном Go. Шаблон Go непосредственно интегрирован в docker и может использоваться просто с командой docker, поскольку его синтаксис является родным для языка программирования Go, на котором построен сам docker.

Команда будет выглядеть примерно так: docker ps -format "GOTEMPLATE".

Синтаксис строки шаблона Go: docker ps --format "ID: {{.ID}}, Name: {{.Names}}, Image: {{.Image}}, Status: {{.Status}}".

Двойные фигурные скобки {{}} используются для обозначения заполнителей для определенных свойств контейнера, таких как ID, Names, Image и Status. Эти заполнители будут заменены фактическими значениями при выполнении команды.

Примеры настройки отображаемой информации

Давайте настроим вывод таким образом, чтобы выводились только ID, образ и имя контейнера:

А вот вывод последних созданных контейнеров с ID контейнера, его статусом и дополнительной колонкой Size:

Использование расширенных фильтров

Docker также предоставляет расширенные опции фильтрации. С их помощью можно вывести список контейнеров на основе различных атрибутов и условий по вашему выбору. Все, что вам нужно сделать, это добавить опцию --filter с парой ключ-значение.

Ключ будет атрибутом контейнера, по которому вы хотите отфильтровать, а значение — условием, которое вы хотите применить к этому атрибуту. Обратите внимание, что filter можно повторять несколько раз с различными условиями.

Примеры фильтрации на основе различных критериев

Фильтрация по имени. Чтобы вывести информацию только по контейнеру с именем admiring_benz, нужно ввести команду docker ps -filter "name=admiring_benz".

Фильтрация по статусу. Можно отфильтровать вывод по значению в столбце Status, например, exited, created или running. Для этого нужно применить следующие команды:

  • docker ps -filter "status=running"
  • docker ps -filter "status=exited"
  • docker ps -filter "status=created"

Фильтрация на основе меток. Пример фильтрации вывода с несколькими опциями --filter: для атрибута status и условия с label. Команда: docker ps --filter "status=created" --filter "label=com.example.version=1.0".

Заключение

Вывод списка контейнеров полезен для управления контейнерами. Информация из этого списка применяется при соединении различных контейнеров для совместного использования ресурсов и мониторинга состояния и производительности конкретного контейнера.

Команды вывода списка контейнеров можно интегрировать в скрипты, сторонние системы мониторинга и инструменты оркестровки, что поможет в автоматизации рабочих процессов.

Давайте повторим рассмотренные команды:

  1. При помощи команды docker ps можно получить список всех запущенных контейнеров.
  2. Используя команду docker ps с дополнительными опциями (docker ps -n 5, docker ps -a, docker ps -q), можно получить список последних контейнеров, список только идентификаторов контейнеров и список контейнеров в различных состояниях (запущенных, остановленных, созданных и т.д.).
  3. Вывод команды docker ps можно настроить, добавив в команду ключевое слово format, за которым следует шаблон Go (например, docker ps -format "TEMPLATE").
  4. Мы также можем использовать дополнительные фильтры на основе атрибутов, чтобы получить в выводе информацию об определенных контейнерах.
  5. Можно добавить в вывод фактический и виртуальный размер каждого контейнера. Для этого используется команда docker ps --size.

Перевод статьи Muhammad Khabbab «A Complete Guide to Listing Docker Containers».

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх