文档详情

Docker容器技术 配置、部署与应用电子活页-05.01.迁移到Compose V2.docx

发布:2025-05-16约2.04千字共2页下载文档
文本预览下载声明

迁移到ComposeV2

从2023年7月起,ComposeV1停止接收更新。它在DockerDesktop的新版本中也不再可用。

ComposeV2于2020年首次发布,包含在DockerDesktop当前支持的所有版本中。它提供了改进的CLI体验,使用BuildKit提高了构建性能,并持续开发新功能。

如何切换到ComposeV2?

最简单和推荐的方法是确保拥有最新版本的DockerDesktop,它捆绑了DockerEngine和DockerCLI平台,包括ComposeV2。当然也可以执行以下命令单独手动安装ComposeV2。

yuminstalldocker-compose-plugin

本例在安装DockerEngine时同时安装了docker-compose-plugin,执行以下命令查看其版本:

[root@host1~]#dockercomposeversion

DockerComposeversionv2.21.0

1.Compose命令:docker-compose与dockercompose

与ComposeV1不同,ComposeV2集成到DockerCLI平台中,推荐的命令行语法为dockercompose。

DockerCLI平台提供了一组一致且可预测的选项和参数,例如Docker_HOST环境变量或--context命令行选项。

此更改允许用户使用root的docker命令上的所有共享选项。例如,docker-log-level=debug-tlscompose-up命令允许从DockerEngine调试日志记录,并确保TLS用于连接。

更新脚本以使用ComposeV2,方法是将连字符(-)替换为空格,使用dockerCompose而不是docker-compose。

2.服务容器名

Compose根据项目名称、服务名称和扩缩副本数来生成容器名称。在ComposeV1中,下划线(_)被用作单词分隔符。在ComposeV2中改用连字符(-)作为单词分隔符。这是因为下划线不是DNS主机名中的有效字符。ComposeV2通过使用连字符来确保可以通过一致、可预测的主机名通过网络访问服务容器。

例如,运行Compose命令-pmyprojectup--scale=1svc会生成名为myproject_svc_1的容器(ComposeV1)和名为myproject-svc-1的容器(compeV2)。

3.命令行选项和子命令

ComposeV2supportsalmostallComposeV1flagsandsubcommands,soinmostcases,itcanbeusedasadrop-inreplacementinscripts.

ComposeV2几乎支持所有ComposeV1命令行的选项和子命令,因此在大多数情况下,它可以直接使用ComposeV1的。

以下两种用法在ComposeV1中已被弃用,在ComposeV2中也不受支持。

docker-composescale

docker-composerm--all

不过在ComposeV2中可以使用dockercompose-up-scale来代替docker-composescale。

另外,还有两个选项在ComposeV2的含义与ComposeV1不一致。

--compatibility选项在ComposeV1中已被弃用,用于基于遗留架构版本迁移YAML字段;而在ComposeV2中,该选项表示使用下划线(_)而不是连字符(-)作为容器名称的单词分隔符,以便于ComposeV1保持一致。

ps--filterKEY-VALUE在ComposeV1中允许按任意服务属性进行筛选;而在ComposeV2中,只允许按特定属性进行筛选,例如--filter=status=running。

4.环境变量

ComposeV1中的环境变量行为没有正式记录,在某些边缘情况下表现不一致。

对于ComposeV2,环境变量部分涵盖了优先级和.env文件插值,并包括许多涉及棘手情况的示例,如转义嵌套引号。

项目使用多级环境变量重写,例如.env文件和--envCLI标志。

任何.env文件值都有转义序列或嵌套引号。

任何.env文件值都包含文字$符号。这在PHP项目中很常见。

任何变量值都使用高级展开语法,例如${VAR:?error}。

最后强调下,虽然用户仍然可以下载并安装ComposeV1软件包,但如果出现任何问题,将无法获得Docker的支持。ComposeV1的最终版本1.2

显示全部
相似文档