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

Как перейти на Docker Compose v2


После почти года бета-тестирования Docker Compose v2 стал общедоступным в виде стабильной версии инструмента управления контейнерами. Большинство пользователей должны иметь возможность переключиться сегодня. В этом руководстве мы покажем вам, как подготовить и применить обновление.

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

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

Вы можете заменить команды следующим образом:

$ docker-compose up -d

Со следующим вызовом:

$ docker compose up -d

В Compose v2 также добавлено несколько новых функций, улучшающих взаимодействие с пользователем:

  • Вы можете использовать docker compose cp для копирования файлов между хостом и контейнерами.
  • Облачные провайдеры являются действительными целями, позволяя вам создавать док-станцию для развертывания контейнеров в Amazon ECS или Microsoft ACI.
  • Профили служб полностью поддерживаются, что упрощает выборочное включение контейнеров в стек.
  • Более упрощенное управление проектами: запускайте команды, не находясь в том же каталоге, что и ваш файл docker-compose.yml, с помощью docker compose --project-name my-project stop . Также есть новая команда docker compose ls, которая выводит список всех ваших проектов Compose.
  • Docker Compose теперь написан на Go, как и сам Docker, а не как отдельная утилита Python. Это позволяет Compose повторно использовать код из основного интерфейса командной строки Docker, создавая более согласованное поведение.

Несовместимость с v1

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

Хотя большинство миграций должны быть простыми, в Compose v2 есть несколько критических изменений, которые могут повлиять на конкретные варианты использования:

  • Контейнеры теперь создаются с дефисами в именах вместо символов подчеркивания. Это означает, что служба с именем db в проекте app теперь будет создавать контейнер с именем app-db вместо app_db. Это может нарушить работу скриптов, которые ожидают использования старого формата имени контейнера. В настоящее время это изменение можно отключить, включив флаг --compatibility в команды docker compose.
  • docker compose build по умолчанию использует BuildKit. BuildKit — это современная система сборки образов Docker, способная выполнять сборки намного быстрее. BuildKit — рекомендуемая система сборки, но у нее осталось несколько несовместимостей с устаревшим механизмом сборки, которые в некоторых случаях могут вызывать проблемы. Вы можете отключить BuildKit, установив переменную среды DOCKER_BUILDKIT=0 перед запуском команд docker compose.
  • Некоторые устаревшие флаги команд были удалены. docker compose rm --all не поддерживается, а команда docker compose scale опущена в в пользу docker compose up --scale. Вам потребуется изменить все скрипты, использующие docker-compose версии этих команд.

Обновление в Linux

Хотя Compose теперь интегрируется с Docker CLI, по умолчанию он не включен в Docker Engine. Вы можете установить Compose v2, добавив его в качестве подключаемого модуля Docker CLI. У вас должна быть версия Docker v20.10.13 или более поздняя.

Обновите репозиторий пакетов и установите docker-compose-plugin:

$ sudo apt update
$ sudo apt install docker-compose-plugin

Проверьте успешность установки, получив версию Docker Compose:

$ docker compose version
Docker Compose version v2.3.3

Теперь вы можете удалить Docker Compose v1, если не хотите сохранить его для обеспечения совместимости с устаревшими скриптами. И docker-compose (v1), и docker-compose (v2) могут сосуществовать, если вам это нужно. Если вы удаляете v1, он обычно находится в виде одного двоичного файла в /usr/local/bin/docker-compose:

$ sudo rm /usr/local/bin/docker-compose

Теперь вы можете настроить псевдоним оболочки для перенаправления docker-compose на docker compose. Это позволит вам продолжать использовать сценарии, которые ожидают Compose v1, используя вашу новую установку v2.

$ echo 'alias docker-compose="docker compose"' >> ~/.bashrc
$ source ~/.bashrc
$ docker-compose version
Docker Compose version v2.3.3

Теперь вы готовы начать управлять своими контейнерами с помощью Compose v2.

Обновление с помощью Docker Desktop для Windows и Mac

Compose v2 входит в состав Docker Desktop версии 3.4 и более поздних версий. v2 стала версией Compose по умолчанию в v4.4.2; если вы уже установили обновление, вы можете использовать docker compose уже сегодня.

v4.4.2 также автоматически использует псевдоним docker-compose для docker compose. Compose v1 по умолчанию недоступен. Вы можете отключить это псевдоним, выполнив команду docker-compose disable-v2 или сняв флажок «Использовать Docker Compose v2» на странице настроек Docker Desktop. Затем команда docker-compose вернется к использованию Compose v1.

Что дальше?

Compose v1 по-прежнему будет поддерживаться в течение следующих шести месяцев для решения проблем с безопасностью «высокой серьезности» и исправления ошибок. Эта поддержка будет прекращена в октябре 2022 года. После этого версия 1 будет считаться устаревшей, поэтому ее следует избегать. На этом этапе Docker Desktop будет обновлен до только поддержки v2. Вам придется использовать docker compose, так как псевдоним docker-compose будет удален. Вам нужно будет остаться на более старой версии, если вам все еще требуется v1.

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

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

Docker Compose v2 теперь является стабильной версией Docker Compose. Пользователи Docker Desktop будут обновлены автоматически. Установки Docker Engine для Linux поддерживаются новым подключаемым модулем командной строки docker-compose-plugin CLI.

Поддержка Compose v1 заканчивается менее чем через шесть месяцев, поэтому вам следует проверить совместимость ваших скриптов, а затем перейти на v2 в ближайшие недели. Вы сможете использовать Compose в интерфейсе командной строки docker и воспользоваться функциями версии 2, такими как профили служб и команда docker compose ls.