Как использовать команду docker container ls для вывода и фильтрации контейнеров

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы научитесь эффективно использовать команду docker container ls (также известную как docker ps) для вывода списка и управления контейнерами Docker. Вы начнёте с отображения всех запущенных контейнеров, а затем расширите список, включив в него остановленные контейнеры.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/run -.-> lab-555113{{"Как использовать команду docker container ls для вывода и фильтрации контейнеров"}} docker/ps -.-> lab-555113{{"Как использовать команду docker container ls для вывода и фильтрации контейнеров"}} docker/pull -.-> lab-555113{{"Как использовать команду docker container ls для вывода и фильтрации контейнеров"}} docker/system -.-> lab-555113{{"Как использовать команду docker container ls для вывода и фильтрации контейнеров"}} end

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

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

Сначала давайте загрузим простой образ, который мы сможем использовать для запуска контейнера. Мы будем использовать образ hello-world — очень маленький образ, предназначенный для тестирования установки Docker.

docker pull hello-world

Вы должны увидеть вывод, указывающий на то, что образ загружается и извлекается.

Теперь давайте запустим контейнер с использованием этого образа. Команда docker run создаёт и запускает новый контейнер.

docker run hello-world

Эта команда запустит контейнер hello-world. Контейнер выведет сообщение и завершит работу. Несмотря на завершение, он всё равно считается существующим в системе, просто не запущенным.

Чтобы увидеть только те контейнеры, которые в данный момент запущены, используйте команду docker ps.

docker ps

Поскольку контейнер hello-world завершил работу сразу после запуска, команда docker ps, скорее всего, не выведет ничего в столбцах "CONTAINER ID", "IMAGE", "COMMAND" и т.д., потому что в данный момент нет запущенных контейнеров.

Давайте запустим контейнер, который останется работать. Мы будем использовать образ ubuntu и выполним простую команду, которая поддерживает работу контейнера. Сначала загрузим образ ubuntu.

docker pull ubuntu

Теперь запустим контейнер Ubuntu, который останется работать, выполнив команду sleep infinity. Флаг -d запускает контейнер в detached mode (в фоновом режиме).

docker run -d ubuntu sleep infinity

Вы увидите длинную строку символов — это ID контейнера. Это означает, что контейнер был запущен в фоновом режиме.

Теперь снова выполните docker ps, чтобы увидеть запущенный контейнер.

docker ps

На этот раз вы должны увидеть вывод со списком только что запущенного контейнера Ubuntu. В выводе содержится информация, такая как ID контейнера, используемый образ, выполняемая команда, время создания, статус, порты и случайно сгенерированное имя.

Команда docker ps необходима для быстрой проверки того, какие контейнеры активны и потребляют ресурсы в вашей системе.

Отображение всех контейнеров, включая остановленные

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

Чтобы вывести список всех контейнеров (как запущенных, так и остановленных), используйте команду docker ps с флагом -a. Флаг -a означает "all" (все).

Давайте выполним эту команду сейчас.

docker ps -a

Вы увидите список, включающий запущенный контейнер Ubuntu из предыдущего шага, а также контейнер hello-world, который завершил работу после выполнения. В колонке "STATUS" будет указано, находится ли контейнер в состоянии "Up" (запущен) или "Exited" (остановлен).

Вывод содержит ту же информацию, что и docker ps (ID контейнера, образ, команда, время создания, статус, порты и имя), но для всех контейнеров, независимо от их текущего состояния.

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

Фильтрация контейнеров по статусу и имени

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

Команда docker ps поддерживает флаг --filter, который позволяет задавать критерии для вывода контейнеров.

Давайте начнём с вывода только запущенных контейнеров с помощью фильтра. Статус работающего контейнера — running.

docker ps --filter "status=running"

Эта команда должна показать тот же результат, что и docker ps из Шага 1, перечислив только контейнер Ubuntu, который сейчас запущен.

Теперь отфильтруем контейнеры, которые завершили работу. Статус остановленного контейнера — exited. Не забудьте добавить флаг -a, чтобы увидеть все контейнеры, иначе фильтр не найдёт остановленные контейнеры, если они не отображаются по умолчанию.

docker ps -a --filter "status=exited"

Эта команда должна показать контейнер hello-world, который вы запускали в Шаге 1, так как его статус — "Exited".

Также можно фильтровать по имени контейнера. Когда вы запускаете контейнер без указания имени через флаг --name, Docker присваивает случайное имя. Вы можете найти имя вашего запущенного контейнера Ubuntu, выполнив docker ps. Посмотрите в колонке "NAMES".

Предположим, имя вашего контейнера Ubuntu — что-то вроде agitated_hoover. Вы можете отфильтровать по этому имени:

docker ps -a --filter "name=agitated_hoover"

Замените agitated_hoover на фактическое имя вашего контейнера Ubuntu. Эта команда выведет контейнер с указанным именем, независимо от его статуса (хотя в данном случае он должен быть запущен).

Фильтры можно комбинировать. Например, чтобы найти запущенный контейнер с определённым именем:

docker ps --filter "status=running" --filter "name=agitated_hoover"

Опять же, замените agitated_hoover на имя вашего контейнера.

Фильтрация — это мощный инструмент для управления и проверки контейнеров, особенно в средах с большим их количеством.

Форматирование вывода для отображения конкретной информации

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

Команда docker ps поддерживает флаг --format, который позволяет задавать формат вывода с использованием синтаксиса шаблонов Go.

Давайте начнём с вывода только ID всех контейнеров.

docker ps -a --format "{{.ID}}"

Эта команда выведет список ID контейнеров (по одному на строку) для всех контейнеров (запущенных и остановленных). {{.ID}} — это шаблон Go, представляющий ID контейнера.

Теперь выведем ID контейнера и имя образа, разделённые табуляцией.

docker ps -a --format "{{.ID}}\t{{.Image}}"

Вы увидите вывод вида [ID контейнера] [имя образа] для каждого контейнера. \t обозначает символ табуляции в шаблоне Go.

Можно включать и другие поля. Вот некоторые распространённые поля:

  • .ID: ID контейнера
  • .Image: Имя образа
  • .Command: Выполняемая команда
  • .CreatedAt: Время создания
  • .Status: Статус контейнера
  • .Ports: Открытые порты
  • .Names: Имена контейнеров

Выведем имя контейнера и его статус.

docker ps -a --format "{{.Names}}: {{.Status}}"

Результат будет выглядеть примерно как [имя контейнера]: [статус] для каждого контейнера.

Также можно использовать формат table для более читаемого вывода с заголовками, аналогичного стандартному, но только с указанными столбцами.

docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"

Эта команда отобразит таблицу со столбцами ID, Image, Names и Status для всех контейнеров.

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

Просмотр использования диска контейнерами

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

Команда docker system df предоставляет сводку о дисковом пространстве, используемом объектами Docker. Аббревиатура df означает "disk free" (свободное место на диске), аналогично стандартной Linux-команде.

Выполним команду для просмотра использования диска:

docker system df

В выводе будет представлена сводка, включающая:

  • Images: Общий размер всех образов Docker в вашей системе
  • Containers: Общий размер записываемого слоя всех контейнеров (пространство, используемое изменениями в файловой системе контейнеров)
  • Local Volumes: Общий размер всех локальных томов (тома используются для постоянного хранения данных)
  • Build Cache: Размер кэша сборки, используемого при построении образов

Вы увидите колонки: "Total", "Active", "Size" и "Reclaimable":

  • Total: Общее количество или размер объектов
  • Active: Количество используемых в данный момент объектов (например, работающие контейнеры, образы, используемые работающими контейнерами)
  • Size: Общее дисковое пространство, занимаемое объектами
  • Reclaimable: Объем пространства, который можно освободить, удалив неиспользуемые объекты

Для более детального просмотра используйте флаг -v (verbose):

docker system df -v

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

Понимание использования диска в Docker критически важно для поддержания здоровой среды Docker и предотвращения заполнения диска. Информация из docker system df поможет вам решить, когда следует очистить неиспользуемые образы, контейнеры или тома.

Итоги

В этой лабораторной работе вы научились использовать команду docker container ls (также известную как docker ps) для вывода списка Docker-контейнеров. Вы начали с отображения только работающих контейнеров с помощью docker ps, а затем узнали, как показать все контейнеры, включая остановленные, добавив флаг -a.

Кроме того, вы изучили фильтрацию списка контейнеров по таким критериям, как статус и имя, с помощью опции --filter. Вы также освоили настройку формата вывода для отображения конкретной информации с использованием флага --format и узнали, как просматривать использование диска контейнерами с помощью команды docker system df.