Совместимость compose с docker-compose

Команда compose в интерфейсе командной строки Docker поддерживает большинство команд и флагов docker-compose. Ожидается, что он станет заменой docker-compose.

Если вы видите какие-либо функции Compose, недоступные в команде compose, создайте задачу в репозитории Написать GitHub, чтобы мы могли определить её приоритет.

Команды или флаги ещё не реализованы

Следующие команды ещё не реализованы и могут быть реализованы позднее. Дайте нам знать, если данные команды имеют более высокий приоритет для ваших вариантов использования.

compose build --memory: данный параметр ещё не поддерживается BuildKit. В настоящее время данный флаг поддерживается, но он скрыт, чтобы не нарушать существующее использование Compose. Это не имеет никакого эффекта.

Флаги, которые не будут реализованы

В приведённый далее список включены флаги, которые мы не планируем поддерживать в Compose в Docker CLI либо потому, что они уже объявлены устаревшими в docker-compose, либо потому, что они не подходят для Compose в Docker CLI.

  • compose ps --filter KEY-VALUE Неактуально из-за сложного использования с командой service, а также из-за того, что он не задокументирован должным образом в docker-compose.

  • compose rm --all Устарело в docker-compose.

  • compose scale Устарело в docker-compose (вместо этого используйте compose up --scale)

Глобальные флаги:

  • --compatibility был переименован в Docker Compose V2. Теперь это означает, что в запущенной команде V2 будет вести себя так, как раньше вел себя V1.

  • Одно отличие заключается в разделителе слов в именах контейнеров. V1 использовал _ в качестве разделителя, а V2 использует -, чтобы сделать имена более удобными для имён хостов. Поэтому при использовании --compatibility Docker Compose следует снова использовать _. Просто убедиться, что придерживаетесь одного из них, иначе Docker Compose не сможет распознать контейнер как экземпляр службы.

Команда конфигурации

Команда config предназначена для отображения конфигурации, используемой Docker Compose для запуска реального проекта. Как известно, некоторые части файла Compose имеют короткий и длинный формат. Например, запись ports. В приведённом далее примере мы видим, как команда config расширяет раздел ports:

докер-compose.yml:

services:
  web:
    image: nginx
    ports:
      - 80:80

С $ docker compose config вывод превращается в:

services:
  web:
    image: nginx
    networks:
      default: null
    ports:
    - mode: ingress
      target: 80
      published: 80
      protocol: tcp
networks:
  default:
    name: workspace_default

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

Новые команды, представленные в Compose v2

Копировать

Команда cp предназначена для копирования файлов или папок между сервисными контейнерами и локальной файловой системой. Эта команда является двунаправленной, мы можем копировать из или в сервисные контейнеры.

Копирует файл из сервисного контейнера в локальную файловую систему:

$ docker compose cp my-service:~/path/to/myfile ~/local/path/to/copied/file

Мы также можем копирует из локальной файловой системы во все запущенные контейнеры службы:

$ docker compose cp --all ~/local/path/to/source/file my-service:~/path/to/copied/file

Список

Команда ls предназначена для вывода списка проектов Compose. По умолчанию команда отображает только запущенные проекты, мы можем использовать флаги для отображения остановленных проектов, для фильтрации по условиям и изменения вывода, например, в формате json.

$ docker compose ls --all --format json
[{"Name":"dockergithubio","Status":"exited(1)","ConfigFiles":"/path/to/docs/docker-compose.yml"}]

Используйте --project-name с командами Compose

В общедоступной версии Compose вы можете запускать некоторые команды:

  • за пределами каталога, содержащего compose-файл проекта

  • или без указания пути Compose с флагом --file

  • или без указания каталога проекта с флагом --project-directory

Когда компоновочный проект был загружен один раз, мы можем просто использовать -p или --project-name для ссылки на него:

$ docker compose -p my-loaded-project restart my-service

Эта опция работает с командами start, stop, restart и down.