Введение
В этой лабораторной работе вы научитесь эффективно использовать команду docker compose ls для вывода списка и управления вашими Docker Compose проектами. Мы начнём с настройки примерного Compose-проекта, включая установку Docker Compose (при необходимости), создание файла docker-compose.yml и запуск проекта.
После настройки проекта вы изучите различные способы вывода списка ваших Compose-проектов с помощью docker compose ls. Это включает вывод только работающих проектов, вывод всех проектов (включая остановленные), отображение только имён проектов и фильтрацию проектов по определённым критериям. К концу этой лабораторной работы вы будете уверенно использовать docker compose ls для получения информации о ваших Compose-окружениях.
Запуск тестового 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-проектов.



