Поиск по сайту:

Что нового в Docker Compose v2?


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

В настоящее время Compose существует как отдельный проект, который распространяется независимо от Docker. Если вы хотите использовать Compose, вам нужно скачать его отдельно. Многие пользователи в конечном итоге берут двоичный файл напрямую, поскольку менеджеры пакетов ОС часто отстают, даже если они предлагают последнюю версию Docker.

Docker Compose v2 был анонсирован на DockerCon 2021. Он обещает большие изменения в работе с Compose за счет его интеграции в интерфейс командной строки docker. Версия 2 также включает новые удобные функции, которые помогут вам управлять стопками контейнеров.

Новая команда «docker compose»

Docker Compose v2 привносит функциональность Compose в сам Docker. Вы сможете использовать Compose везде, где установлена последняя версия интерфейса командной строки Docker, никаких дополнительных действий не требуется. Ниже 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. Desktop версии 3.4 добавлена поддержка команд docker compose, поэтому есть вероятность, что вы уже можете использовать ее сегодня. Пакеты Linux будут обновлены позже в этом году; тем временем доступен сценарий ручной установки.

Команда docker-compose в настоящее время может вызывать v1 или v2, по умолчанию v1. Эта опция автоматически включается для части пользователей; в конечном итоге он запустит v2 для всех.

Вы можете вручную переключать docker-compose между v1 и v2, запустив docker-compose disable-v2 или docker-compose enable-v2. Это позволяет поддерживать совместимость с любыми существующими файлами Compose, которые не работают с v2. Команды docker compose всегда будут использовать v2.

Изменения спецификации

Добавление функциональности Compose в Docker CLI потребовало внесения изменений в спецификацию Compose. Теперь это различает реализации команд и формат docker-compose.yml YAML.

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

Помимо CLI, наличие спецификации Composer позволяет поставщикам облачных услуг также реализовывать функциональность Compose. Теперь вы можете запустить docker compose up в облачном контексте Docker, чтобы запустить свое приложение в рабочей среде. Docker поставляется со встроенной поддержкой сред Amazon ECS и Microsoft ACI.

Внутри Compose v2 по умолчанию использует Buildkit для более быстрой сборки. Общая производительность должна быть выше, поскольку параллельно выполняется больше задач, что сокращает время обработки.

Новые функции в версии 2

Переход с docker-compose на docker compose — не единственное изменение в v2. Есть также новые функции, которые влияют на то, как вы взаимодействуете со стеками контейнеров.

Одним из ограничений Compose v1 является подход к именам проектов. Когда вы запускаете docker-compose up -d, Compose добавляет имя проекта к имени службы каждого контейнера. Это гарантирует, что все контейнеры сгруппированы вместе.

v1 выводит имя проекта из имени вашего рабочего каталога. Вы можете вручную выбрать другое имя, установив переменную среды COMPOSE_PROJECT_NAME.

v2 упрощает это, добавляя флаг CLI для установки имени проекта. Добавьте --project-name или -p, чтобы игнорировать имя рабочего каталога без изменения среды. Установка имени проекта вручную позволяет объединять контейнеры из нескольких рабочих каталогов в один стек или запускать несколько экземпляров стека контейнеров.

Еще одна новая функция версии 2 позволяет составить список всех стеков Compose в вашей системе. Команда docker compose ls предоставляет таблицу с именами проектов и их статусом (выполняется или остановлен). Это дополняет команду docker compose ps, которая выдает статусы контейнеров в стеке.

В Compose v2 также добавлена поддержка docker compose cp. Эта команда работает аналогично docker cp и позволяет копировать файлы в контейнеры и из них:

docker cp my-container local-file.txt /path/to/container/file.txt

Краткое содержание

Docker Compose v2 — это существенное обновление, которое делает инструмент управления контейнерами более удобным. Интеграция Compose в основной интерфейс командной строки Docker означает, что он доступен везде, где находится Docker. Это делает его более доступным и легким для начала работы.

Compose v2 также содержит несколько дополнительных служебных команд, облегчающих работу с различными стеками и контейнерами. Вы получаете улучшенную видимость того, что работает в вашей системе. Хотя на момент написания статьи он все еще находился в стадии бета-тестирования, пользователи Windows и Mac могут использовать v2 уже сегодня, а пользователи Linux могут загрузить последнюю сборку с GitHub.