Docker Compose 的历史和发展

此页面提供:

  • Docker Compose CLI 的发展简史
  • 对构成 Compose V1 和 Compose V2 的主要版本和文件格式的清晰说明
  • Compose V1 和 Compose V2 之间的主要区别

介绍

Image showing the main differences between Compose V1 and Compose V2

上图显示,当前支持的 Docker Compose CLI 版本是 Compose V2,它由 Compose 规范定义。

它还提供了文件格式、命令行语法和顶级元素差异的快速快照。以下部分将更详细地介绍这一点。

Docker Compose CLI 版本控制

Docker Compose 命令行Binaries的第一个版本于 2014 年首次发布。它是用 Python 编写的,并使用docker-compose. 通常,Compose V1 项目包含顶级version元素中的compose.ymlfile,其值范围为2.03.8,指的是特定的文件格式

Docker Compose 命令行Binaries的第二个版本于 2020 年宣布,用 Go 编写,并使用docker compose. Compose V2 会忽略versiontop-level 元素中compose.yml文件。

编写文件格式版本控制

Docker Compose CLI 由特定文件格式定义。

发布了 Compose V1 的 Compose 文件格式的三个主要版本:

  • 使用 1 年的 Compose 1.0.0 编写文件格式 2014
  • 2016 年的 Compose 文件格式为 2.x 和 Compose 1.6.0
  • 2017 年的 Compose 文件格式 3.x 和 Compose 1.10.0

Compose 文件格式 1 与以下所有格式有很大不同,因为它缺少顶级services钥匙。 它的使用情况是历史的,以这种格式编写的文件不会与 Compose V2 一起运行。

Compose 文件格式 2.x 和 3.x 彼此非常相似,但后者引入了许多针对 Swarm 部署的新选项。

为了解决 Compose CLI 版本控制、Compose 文件格式版本控制和功能对等性(取决于是否使用 Swarm 模式)方面的混淆,文件格式 2.x 和 3.x 已合并到 Compose 规范中。

Compose V2 使用 Compose 规范进行项目定义。与之前的文件格式不同,Compose 规范是滚动的,它使versiontop-level 元素可选。Compose V2 还使用了可选的规范 - DeployDevelopBuild

为了简化迁移,Compose V2 向后兼容在 Compose 文件格式 2.x/3.x 和 Compose 规范之间已弃用或更改的某些元素。