docker-compose v2 简介

2023-12-12  本文已影响0人  偷油考拉

https://docs.docker.com/compose/migrate/

一、简介

自2023年7月,Compose V1 就停止接受更新了。
Compose V2 发布于 2020 年,当前所有的 docker desktop 都支持。它提供了改进了 CLI 体验,提升了 BuildKit 的编译性能,以及持续的新功能开发。

二、在 linux 上安装 Compose V2

1. 仓库安装

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

or

sudo yum update
sudo yum install docker-compose-plugin
docker compose version

2. 手动安装

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

三、Compose V1 跟 Compose V2 的不同

1. docker-compose vs docker compose

不同于V1,V2 集成到了命令行,推荐的语法是 docker compose
Docker 命令行提供了一些参数和标签,比如: DOCKER_HOST环境变量、--context 命令行标签。
这种变化使得可以在 root docker命令使用所有的共享标签。比如:docker --log-level=debug --tls compose up 开启 debug 日志,开启 tls 支持。

2. Service container names

Compose 生成的容器名基于 project nameservice namescale/replica count

在Compose V1, 下划线 (_) 作为单词分隔符。在Compose V2,中横线 (-) 作为单词分隔符。

下划线在DNS hostname中是不合法字符。通过使用中横线,Compose V2 确保容器可以通过hostname访问到。

比如:Compose 命令 -p myproject up --scale=1 svc ,在Compose V1的结果是 myproject_svc_1,在Compose V2的结果是 myproject-svc-1

注意:
在 Compose V2 中, --compatibility全局标签 or COMPOSE_COMPATIBILITY环境变量保留了 Compose V1操作,可以使用下划线(_)作为单词分隔符。由于必须为每次运行Compose V2命令指定此选项,因此建议您在转换到Compose V2时仅将其用作临时措施。

3. Command-line flags and subcommands

Compose V2几乎支持所有Compose V1的标签和子命令,因此在大多数情况下,脚本中可插拔式替换。

V2 不支持的操作

V2 的不同处

Compose V1 Compose V2
--compatibility Deprecated. Migrates YAML fields based on legacy schema version. Uses _ as word separator for container names instead of - to match V1.
ps --filter KEY-VALUE Undocumented. Allows filtering by arbitrary service properties. Only allows filtering by specific properties, e.g. --filter=status=running.

4. 环境变量

Compose V1中的环境变量行为没有正式记录,在某些边缘案例中表现不一致。

对于Compose V2,环境变量涵盖了优先级.env文件,还包括许多棘手的情况,如 转义嵌套引号

参考:https://docs.docker.com/compose/environment-variables/env-file/

上一篇下一篇

猜你喜欢

热点阅读