Docker Compose — чрезвычайно популярный инструмент для работы с контейнерами. В то время как обычный интерфейс командной строки Docker взаимодействует с одним контейнером за раз, docker-compose позволяет управлять несколькими контейнерами одновременно.
В настоящее время Compose существует как отдельный проект, распространяемый независимо от Docker. Если вы хотите использовать Compose, вам нужно будет скачать его отдельно. Многие пользователи в итоге скачивают бинарную версию напрямую, так как менеджеры пакетов ОС часто отстают в обновлении, даже если предлагают последнюю версию Docker.
Docker Compose v2 был анонсирован на DockerCon 2021. Он обещает значительные изменения в работе с Compose за счёт интеграции с интерфейсом командной строки Docker. v2 также содержит новые удобные функции, которые помогут вам управлять стеками контейнеров.
Новая команда “docker compose”
Docker Compose v2 добавляет функции Compose в сам Docker. Вы сможете использовать Compose везде, где установлена последняя версия Docker CLI, без дополнительных действий. При этом Docker продолжает использовать функции, предоставляемые проектом Compose.
Существующие команды docker-compose должны напрямую соответствовать новым командам docker-compose. В большинстве случаев вы можете опустить тире без каких-либо дополнительных изменений. docker-compose поддерживает почти все подкоманды и флаги Compose v1, хотя некоторые из них не будут реализованы.
Compose v2 по-прежнему будет поддерживать запуск с помощью двоичного файла docker-compose. Существующие сценарии рабочих процессов должны продолжать работать, даже если вы не обновите их сразу до использования docker compose. В долгосрочной перспективе большинство авторов, скорее всего, перейдут на новую форму.
Экспериментирую с Docker Compose v2
Compose v2 в настоящее время находится на стадии бета-тестирования. Несмотря на то, что он всё ещё находится в разработке, новый двоичный файл уже поставляется с Docker Desktop для Windows и Mac. В версии 3.4 Docker Desktop добавлена поддержка команд docker compose, так что, скорее всего, вы уже можете использовать его сегодня. Пакеты для Linux будут обновлены позднее в этом году; тем временем доступен сценарий установки вручную.
В настоящее время команда docker-compose может вызывать версии 1 или 2, по умолчанию используется версия 1. Эта опция автоматически включается для некоторых пользователей; в конечном итоге она будет включена для всех.
Вы можете вручную переключиться с версии 1 на версию 2, выполнив команды docker-compose disable-v2 или docker-compose enable-v2. Это позволит сохранить совместимость с любыми существующими файлами Compose, которые не работают с версией 2. Команды docker compose всегда будут использовать версию 2.
Изменения в спецификации
Добавление функций Compose в Docker CLI потребовало внесения изменений в спецификацию Compose. Теперь она различает реализации команд и формат YAML docker-compose.yml.
Пересмотренный подход открывает новые возможности для интеграции дополнительных функций. Экспериментальные реализации могут быть предоставлены быстрее, а команда Compose лучше подготовлена для добавления предложений сообщества. Интерфейс командной строки в большей степени независим от формата файлов YAML, поэтому возможны альтернативные реализации (например, docker compose).
Внутри Compose v2 по умолчанию используется Buildkit для более быстрой сборки. Общая производительность должна быть выше, так как больше задач выполняется параллельно, что сокращает время обработки.
Новые функции в версии v2
Переход с docker-compose на docker compose — не единственное изменение в версии 2. В ней также появились новые функции, которые влияют на взаимодействие со стеками контейнеров.
Одним из ограничений Compose v1 является подход к именам проектов. При запуске docker-compose up -d Compose добавляет имя проекта к имени службы каждого контейнера. Это позволяет сгруппировать все контейнеры.
v1 определяет имя проекта по названию вашего рабочего каталога. Вы можете вручную выбрать другое имя, задав переменную среды COMPOSE_PROJECT_NAME.
v2 упрощает эту задачу, добавляя флаг командной строки для установки имени проекта. Добавьте –project-name или -p, чтобы игнорировать имя рабочего каталога без изменения среды. Ручная установка имени проекта позволяет объединять контейнеры из нескольких рабочих каталогов в один стек или запускать несколько экземпляров стека контейнеров.
Ещё одна новая функция версии 2 позволяет просматривать все стеки Compose в вашей системе. Команда docker compose ls выводит таблицу с названиями проектов и их состоянием (работают или остановлены). Это дополняет команду docker compose ps, которая выводит состояние контейнеров в стеке.
Compose v2 также добавляет поддержку команды docker compose cp. Эта команда работает аналогично docker cp и позволяет копировать файлы в контейнеры и из них:
Краткое содержание
Docker Compose v2 — это значительное обновление, которое делает инструмент управления контейнерами более удобным. Интеграция Compose в основной интерфейс командной строки Docker означает, что он доступен везде, где есть Docker. Это делает его более доступным и простым в использовании.
Compose v2 также содержит дополнительные служебные команды, упрощающие работу с различными стеками и контейнерами. Вы получаете более полное представление о том, что происходит в вашей системе. Хотя на момент написания статьи он всё ещё находится на стадии бета-тестирования, пользователи Windows и Mac могут использовать v2 уже сегодня, а пользователи Linux могут скачать последнюю версию с GitHub.
Источник: What S New In Docker Compose V2