Введение
В этой лабораторной работе (LabEx) вы научитесь эффективно использовать команду docker container ls (также известную как docker ps) для просмотра и управления контейнерами Docker. Вы начнёте с вывода только работающих контейнеров, а затем расширите представление, включив все контейнеры, включая остановленные.
Кроме того, вы изучите, как фильтровать список контейнеров по различным критериям, таким как статус и имя, что позволит быстро находить нужные контейнеры. Наконец, вы узнаете, как отображать дополнительную информацию, например размер контейнера, и форматировать вывод в соответствии с вашими потребностями, получая полное представление о состоянии ваших контейнеров.
Вывод списка работающих контейнеров
На этом шаге вы узнаете, как вывести список работающих Docker-контейнеров. Команда docker ps используется для отображения информации о запущенных контейнерах.
Сначала запустим простой контейнер, который будет оставаться активным. Мы используем образ ubuntu и выполним команду, которая поддерживает работу контейнера.
docker pull ubuntu
docker run -d ubuntu sleep infinity
Команда docker pull ubuntu загружает образ ubuntu из Docker Hub. Команда docker run -d ubuntu sleep infinity запускает новый контейнер на основе образа ubuntu.
-dзапускает контейнер в detached mode (фоновом режиме), то есть в фоновом режиме.ubuntu— это имя образа.sleep infinity— команда, выполняемая внутри контейнера, которая поддерживает его работу бесконечно.
Теперь выведем список работающих контейнеров с помощью команды docker ps.
docker ps
Эта команда покажет список всех текущих запущенных контейнеров. Вы должны увидеть контейнер ubuntu, который мы только что запустили. В выводе будет указана информация, такая как ID контейнера, образ, команда, время создания, статус, порты и имена.
Показать все контейнеры, включая остановленные
На предыдущем шаге вы узнали, как вывести список работающих контейнеров с помощью docker ps. Однако docker ps показывает только активные контейнеры. Чтобы увидеть все контейнеры, включая остановленные, необходимо использовать флаг -a.
Сначала остановим контейнер ubuntu, который мы запустили ранее. Для этого потребуется ID или имя контейнера, которые можно получить из вывода команды docker ps.
docker stop $(docker ps -q --filter ancestor=ubuntu)
Команда docker stop останавливает работающий контейнер.
$(docker ps -q --filter ancestor=ubuntu)— это подстановка команды, которая получает ID контейнера на основе образаubuntu. Флаг-qвыводит только ID контейнера, а--filter ancestor=ubuntuфильтрует по имени образа.
Теперь выведем список всех контейнеров, включая остановленный, с помощью docker ps -a.
docker ps -a
Эта команда отобразит список всех созданных контейнеров, независимо от их текущего состояния (работает, остановлен, завершён и т.д.). Вы должны увидеть контейнер ubuntu в списке, и его статус будет указан как "Exited" (Завершён).
Фильтрация контейнеров по статусу и имени
На этом шаге вы узнаете, как фильтровать список контейнеров по их статусу и имени с помощью флага --filter в команде docker ps. Это полезно, когда у вас много контейнеров и нужно найти конкретные.
Сначала запустим ещё один контейнер, но на этот раз зададим ему определённое имя.
docker run -d --name my-nginx nginx
Команда docker run -d --name my-nginx nginx создаёт новый контейнер на основе образа nginx в detached mode (фоновом режиме) и присваивает ему имя my-nginx.
- Явное выполнение
docker pull nginxздесь не требуется, так какdocker runавтоматически загрузит образ, если он отсутствует локально.
Теперь выведем только работающие контейнеры, используя фильтр по статусу.
docker ps --filter status=running
Эта команда покажет только контейнеры в состоянии "running" (работающие). В списке должен отобразиться контейнер my-nginx.
Далее отфильтруем контейнеры по имени.
docker ps -a --filter name=my-nginx
Эта команда выведет все контейнеры (включая остановленные, благодаря флагу -a), имеющие имя my-nginx. Вы увидите контейнер my-nginx с указанием его статуса.
Фильтры можно комбинировать. Например, чтобы вывести работающие контейнеры с определённым именем:
docker ps --filter status=running --filter name=my-nginx
Эта команда покажет контейнер my-nginx только если он в данный момент работает.
Отображение размера контейнера и форматирование вывода
На этом шаге вы узнаете, как отображать размер контейнеров и форматировать вывод команды docker ps. Знание размера контейнеров полезно для управления дисковым пространством.
По умолчанию docker ps не показывает размер контейнеров. Чтобы включить эту информацию, используйте флаг --size.
docker ps -a --size
Эта команда выведет список всех контейнеров (работающих и остановленных) с двумя дополнительными колонками: SIZE (размер записываемого слоя контейнера) и VIRTUAL SIZE (общий размер контейнера, включая слои образа).
Иногда стандартный формат вывода docker ps может не соответствовать вашим потребностям. Вы можете настроить формат вывода с помощью флага --format, который принимает строку шаблона Go.
Например, чтобы отобразить только ID контейнера, имя образа и статус, используйте следующую команду:
docker ps -a --format "{{.ID}}\t{{.Image}}\t{{.Status}}"
В этом шаблоне:
{{.ID}}— ID контейнера{{.Image}}— имя образа{{.Status}}— статус контейнера\t— символ табуляции для разделения колонок
Вы также можете включить информацию о размере в форматированный вывод:
docker ps -a --format "{{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Size}}"
Эта команда отобразит ID контейнера, образ, статус и размер. Поле {{.Size}} включает как размер записываемого слоя, так и виртуальный размер.
Экспериментируйте с различными полями шаблона, чтобы настроить вывод под свои нужды. Другие полезные поля включают {{.Names}}, {{.CreatedAt}} и {{.Ports}}.
Резюме
В этой лабораторной работе вы научились использовать команду docker ps для вывода списка Docker-контейнеров. Вы начали с отображения только работающих контейнеров с помощью docker ps, предварительно запустив простой контейнер ubuntu в detached mode (фоновом режиме). Затем вы узнали, как выводить все контейнеры, включая остановленные, добавив флаг -a к команде docker ps после остановки ранее созданного контейнера.



