Как использовать команду docker compose ls для вывода списка Compose-проектов

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

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

Введение

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

После настройки проекта вы изучите различные способы вывода списка ваших Compose-проектов с помощью docker compose ls. Это включает вывод только работающих проектов, вывод всех проектов (включая остановленные), отображение только имён проектов и фильтрацию проектов по определённым критериям. К концу этой лабораторной работы вы будете уверенно использовать docker compose ls для получения информации о ваших Compose-окружениях.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ls -.-> lab-555083{{"Как использовать команду docker compose ls для вывода списка Compose-проектов"}} docker/ps -.-> lab-555083{{"Как использовать команду docker compose ls для вывода списка Compose-проектов"}} docker/pull -.-> lab-555083{{"Как использовать команду docker compose ls для вывода списка Compose-проектов"}} end

Запуск примерного Compose-проекта

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

Мы скачаем бинарный файл Docker Compose и сделаем его исполняемым.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

После установки мы можем проверить её успешность, запросив версию Docker Compose.

docker-compose --version

В консоли должна отобразиться информация о версии, что подтвердит корректную установку Docker Compose.

Теперь создадим простой Compose-проект. Создадим директорию для проекта и файл docker-compose.yml, который будет определять сервисы нашего приложения.

Сначала создадим директорию с именем my-compose-app.

mkdir ~/project/my-compose-app
cd ~/project/my-compose-app

Затем создадим файл docker-compose.yml в директории ~/project/my-compose-app с помощью редактора nano.

nano docker-compose.yml

Добавим следующее содержимое в файл docker-compose.yml. Этот файл определяет один сервис web, использующий образ nginx.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Сохраним файл и выйдем из редактора nano (нажмите Ctrl + X, затем Y, затем Enter).

Перед запуском сервиса убедимся, что образ nginx:latest доступен локально. Мы можем загрузить его с помощью команды docker pull.

docker pull nginx:latest

Теперь, когда у нас есть файл docker-compose.yml и необходимый образ, мы можем запустить Compose-проект командой docker-compose up. Флаг -d запускает сервисы в detached mode (фоновом режиме).

docker-compose up -d

Эта команда создаст и запустит сервис web, как определено в файле docker-compose.yml. В выводе будет указано, что сервис создаётся и запускается.

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

docker ps

Также можно получить доступ к веб-серверу Nginx, открыв браузер и перейдя по IP-адресу вашей виртуальной машины LabEx. Поскольку мы сопоставили 80-й порт контейнера с 80-м портом хоста, вы должны увидеть стандартную приветственную страницу Nginx.

Вывод списка работающих Compose-проектов с помощью docker compose ls

На предыдущем шаге мы запустили примерный Compose-проект под названием my-compose-app. Теперь мы научимся выводить список работающих Compose-проектов с помощью команды docker compose ls.

Команда docker compose ls используется для вывода списка всех Compose-проектов. По умолчанию она показывает только работающие проекты.

Убедитесь, что находитесь в директории ~/project/my-compose-app, где расположен ваш файл docker-compose.yml.

cd ~/project/my-compose-app

Теперь выполните команду docker compose ls.

docker compose ls

Вы должны увидеть вывод, похожий на этот:

NAME              STATUS    CONFIG FILES
my-compose-app    running   docker-compose.yml

Этот вывод показывает, что есть один работающий Compose-проект с именем my-compose-app, использующий конфигурационный файл docker-compose.yml.

Команда docker compose ls — это быстрый способ увидеть, какие из ваших Compose-проектов в данный момент активны и запускают контейнеры.

Вывод всех Compose-проектов, включая остановленные, с помощью docker compose ls -a

На предыдущем шаге мы выводили список работающих Compose-проектов. По умолчанию команда docker compose ls показывает только проекты, у которых есть хотя бы один запущенный контейнер. Чтобы увидеть все Compose-проекты, включая остановленные, необходимо использовать флаг -a.

Сначала остановим проект my-compose-app, который мы запустили на первом шаге. Убедитесь, что находитесь в директории ~/project/my-compose-app.

cd ~/project/my-compose-app

Теперь остановим проект с помощью команды docker-compose down. Эта команда останавливает и удаляет контейнеры, сети и тома, созданные командой docker-compose up.

docker-compose down

Вы увидите вывод, подтверждающий остановку и удаление сервисов и ресурсов.

Теперь, когда проект остановлен, попробуем снова вывести список Compose-проектов стандартной командой docker compose ls.

docker compose ls

На этот раз проект my-compose-app не будет отображаться в списке, так как он остановлен.

Теперь используем команду docker compose ls -a для вывода всех Compose-проектов, включая остановленные.

docker compose ls -a

Теперь вы должны увидеть вывод, похожий на этот:

NAME              STATUS     CONFIG FILES
my-compose-app    exited     docker-compose.yml

Этот вывод показывает, что проект my-compose-app существует, несмотря на статус exited (остановлен). Флаг -a полезен для просмотра всех Compose-проектов, определённых в вашей системе, независимо от их текущего состояния.

Вывод только названий проектов с помощью docker compose ls -q

На предыдущих шагах мы выводили список Compose-проектов с их статусом и конфигурационными файлами. Иногда может потребоваться получить только список названий проектов, например, для использования в скриптах. Команда docker compose ls -q позволяет это сделать.

Флаг -q означает "quiet" (тихий режим) и подавляет весь вывод, кроме названий проектов.

Убедитесь, что находитесь в директории ~/project/my-compose-app.

cd ~/project/my-compose-app

Теперь выполните команду docker compose ls -q.

docker compose ls -q

Вы должны увидеть только название Compose-проекта, выведенное в консоль:

my-compose-app

Это полезно, когда требуется получить чистый список названий проектов без дополнительной информации. Флаг -q можно комбинировать с флагом -a для вывода названий всех Compose-проектов, включая остановленные.

Попробуем это:

docker compose ls -a -q

Вы по-прежнему увидите:

my-compose-app

Это подтверждает, что флаг -q выводит только названия проектов, независимо от того, работает проект или остановлен, при комбинации с флагом -a.

Фильтрация Compose-проектов с помощью docker compose ls --filter

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

Флаг --filter позволяет задавать пары "ключ-значение" для фильтрации результатов. Один из распространённых фильтров - по status.

Сначала убедимся, что наш проект my-compose-app остановлен. Мы останавливали его на предыдущем шаге, но хорошей практикой будет проверить это.

cd ~/project/my-compose-app
docker-compose down

Теперь используем флаг --filter для вывода только работающих Compose-проектов. Так как наш проект остановлен, эта команда не должна показать никаких результатов.

docker compose ls --filter status=running

Вы не увидите вывода, так как нет работающих Compose-проектов.

Теперь применим флаг --filter для вывода только остановленных Compose-проектов.

docker compose ls --filter status=exited

Вы должны увидеть вывод, похожий на этот:

NAME              STATUS     CONFIG FILES
my-compose-app    exited     docker-compose.yml

Это показывает, что проект my-compose-app отображается, так как его статус - exited.

Также можно фильтровать по другим критериям, например по name проекта. Отфильтруем проект с именем my-compose-app.

docker compose ls --filter name=my-compose-app

Эта команда также должна показать проект my-compose-app:

NAME              STATUS     CONFIG FILES
my-compose-app    exited     docker-compose.yml

Флаг --filter предоставляет мощный инструмент для управления и просмотра ваших Compose-проектов, особенно в средах с большим количеством различных приложений, определённых через Compose-файлы.

Итоги

В этой лабораторной работе мы изучили, как использовать команду docker compose ls для вывода списка Docker Compose-проектов. Мы начали с установки Docker Compose, затем создали и запустили тестовый Compose-проект, используя файл docker-compose.yml и команду docker-compose up -d.

Далее мы исследовали различные параметры команды docker compose ls. Мы использовали:

  • docker compose ls для вывода работающих проектов
  • docker compose ls -a для вывода всех проектов, включая остановленные
  • docker compose ls -q для вывода только названий проектов
  • docker compose ls --filter для фильтрации проектов по определённым критериям

Эти шаги продемонстрировали универсальность команды docker compose ls для управления и проверки Compose-проектов.