Как перейти на 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
.