- Список контейнеров Docker
- Синтаксис команды docker ps
- Запущенные контейнеры Docker
- Выводы
- Как вывести список контейнеров в Docker
- Как вывести список запущенных контейнеров
- Объяснение вывода
- Как вывести список всех контейнеров Docker
- Чем отличаются запущенные и остановленные контейнеры в списке
- Как вывести последние созданные контейнеры
- Зачем может понадобиться вывести список последних созданных контейнеров
- Откат при возникновении проблем, связанных с последним обновлением
- Ограниченные ресурсы для развертывания контейнеров
- Отключение усечения
- Вывод списка только идентификаторов (тихий режим)
- Сценарии, при которых требуются только идентификаторы контейнеров
- Среда оркестровки
- Соединение контейнеров
- Просмотр размера контейнера
- Дополнительная колонка Size в выводе
- Настройка вывода списка контейнеров
- Примеры настройки отображаемой информации
- Использование расширенных фильтров
- Примеры фильтрации на основе различных критериев
- Заключение
Список контейнеров Docker
Продолжение серии статей про Docker. В прошлой мы разбирали, как создать контейнер на основе образа. Сегодня же хочу более подробно рассказать, как посмотреть список контейнеров, чтобы понять, какие из них запущены, какие упали, а какие вообще следовало бы удалить, чтобы они не занимали места на диске.
Для просмотра списка контейнеров используется команда docker ps. Она позволяет смотреть как запущенные контейнеры Docker, так и все контейнеры, которые есть в системе.
Синтаксис команды docker ps
В синтаксисе команды вообще нет ничего сложного:
$ docker ps опции
- —all , -a — вывести все контейнеры, и запущенные и не запущенные;
- —filter , -f — фильтровать контейнеры при выводе;
- —format — более красивый вывод списка контейнеров;
- —last , -n — показать только N последних созданных контейнеров;
- —latest , -l — вывести только последний контейнер;
- —no-trunc — не обрезать вывод программы;
- —quiet , -q — отображать только цифровые идентификаторы контейнеров;
- —size , -s — отображать размер контейнера.
А теперь разберёмся более подробно, как посмотреть контейнеры Docker.
Запущенные контейнеры Docker
По умолчанию docker ps выводит только запущенные контейнеры и при этом обрезает слишком длинные поля:
Чтобы вывести контейнеры, не обрезая информацию, используйте параметр —no-trunc:
Для того чтобы посмотреть не только запущенные контейнеры, а все, используйте опцию -a:
Вы можете фильтровать контейнеры по имени, например, вывести только те, в имени которых содержится Ubuntu1804:
docker ps —filter name=Ubuntu1804
Есть и другие фильтры, но я не буду здесь их описывать, если они вам нужны, посмотрите официальную документацию. Для того чтобы вывести в список контейнеров Docker дополнительно размер контейнера, используйте опцию -s:
Команда показывает два размера. Первый из них — это объём, занимаемый записываемой частью контейнера. Второй размер -виртуальный, это общее пространство, занимаемое и записываемой частью контейнера, и доступными только для чтения данными образа.
Опция -l может использоваться для просмотра только последнего созданного образа. Это может быть полезно, например, чтобы узнать его идентификатор:
Если вас интересует, где хранятся контейнеры docker , то тут вам поможет команда docker inspect. Она позволяет смотреть подробную информацию про контейнер. У контейнера есть несколько папок для различных целей, давайте посмотрим MergedDir:
С тем же успехом вы можете смотреть LogPath или другие директории контейреа.
Выводы
Из этой статьи вы узнали, как выполнить просмотр контейнеров Docker. Это довольно простая задача по сравнению с созданием контейнера, но тоже не менее важная.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как вывести список контейнеров в Docker
Работая с приложениями в контейнерах, вам нередко придется выводить список контейнеров Docker, например, запущенных. Это помогает мониторить их состояние, эффективно использовать ресурсы, вовремя обнаруживать потенциальные источники проблем, балансировать нагрузку, организовывать размещение контейнеров, а также проверять, не появились ли неавторизованные или вредоносные контейнеры.
От редакции Techrocks: познакомиться с контейнерами Docker можно, почитав статью «Docker: объяснение на пальцах».
Как вывести список запущенных контейнеров
Предположим, вы создали много контейнеров. Одни запущены, другие остановлены. Если применить команду docker ps , по умолчанию будет выведен список только запущенных контейнеров.
Объяснение вывода
Выполнив команду docker ps , вы получите вывод, как на скриншоте выше. Это информация о каждом запущенном контейнере, разбитая на семь столбцов.
- Container ID. Этот столбец содержит идентификаторы запущенных контейнеров.
- Image. Образы, использованные для создания контейнеров.
- Command. Команды, выполненные в фоне для инициализации и запуска каждого контейнера.
- Created. Время создания контейнеров.
- Status. Текущее состояние каждого контейнера. Возможные значения — running, exited, paused, removing, restarting и т.д.
- Ports. Ко всем контейнерам привязаны порты. С их помощью вы можете обратиться к сервису внутри контейнера. Например, если порт хоста 8080 привязан к 80-му порту контейнера, вы сможете получить доступ к веб-контенту контейнера, введя http://localhost:8080 в браузере на своей локальной машине.
- Names. Уникальные имена всех запущенных контейнеров.
Как вывести список всех контейнеров Docker
Если вы хотите увидеть информацию по всем контейнерам, нужно добавить к команде docker ps опцию -a . Так вы получите все запущенные, перезапущенные, приостановленные и остановленные контейнеры.
Чем отличаются запущенные и остановленные контейнеры в списке
Чтобы отличить запущенный контейнер от остановленного в выводе команды docker ps -a, нужно обратить внимание на столбец Status. Если там значится что-то вроде «up 3 hours», это означает, что контейнер запущен и работает уже 3 часа. А если там написано что-то типа «Exited 4 hours go», это значит, что контейнер был остановлен 4 часа назад.
Как вывести последние созданные контейнеры
Для вывода списка последних созданных контейнеров раньше использовалась команда 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: >, Name: >, Image: >, 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» .
Заключение
Вывод списка контейнеров полезен для управления контейнерами. Информация из этого списка применяется при соединении различных контейнеров для совместного использования ресурсов и мониторинга состояния и производительности конкретного контейнера.
Команды вывода списка контейнеров можно интегрировать в скрипты, сторонние системы мониторинга и инструменты оркестровки, что поможет в автоматизации рабочих процессов.
Давайте повторим рассмотренные команды:
- При помощи команды docker ps можно получить список всех запущенных контейнеров.
- Используя команду docker ps с дополнительными опциями ( docker ps -n 5 , docker ps -a , docker ps -q ), можно получить список последних контейнеров, список только идентификаторов контейнеров и список контейнеров в различных состояниях (запущенных, остановленных, созданных и т.д.).
- Вывод команды docker ps можно настроить, добавив в команду ключевое слово format , за которым следует шаблон Go (например, docker ps -format «TEMPLATE» ).
- Мы также можем использовать дополнительные фильтры на основе атрибутов, чтобы получить в выводе информацию об определенных контейнерах.
- Можно добавить в вывод фактический и виртуальный размер каждого контейнера. Для этого используется команда docker ps —size .