Docker Compose的历史和发展

重要的

Docker 的文档引用并描述了 Compose V2 功能。

自 2023 年 7 月起,Compose V1 停止接收更新,并且不再出现在新的 Docker Desktop 版本中。 Compose V2 已取代它,并且现已集成到所有当前的 Docker Desktop 版本中。有关更多信息,请参阅 迁移到 Compose V2

此页面提供:

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

介绍

该图显示了 Compose V1 和 Compose V2 之间的主要区别

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

它还提供了文件格式、命令行语法和顶级元素差异的快速快照。以下各节将对此进行更详细的介绍。

Docker Compose CLI 版本控制

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

Docker Compose 命令行二进制文件的第二版于 2020 年发布,用 Go 编写,并使用docker compose. Compose V2 忽略文件version中的顶级元素compose.yml

Compose 文件格式版本控制

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

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

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

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

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

Compose V2 使用 Compose 规范进行项目定义。与以前的文件格式不同,Compose 规范是滚动的,并使version顶级元素成为可选的。 Compose V2 还使用可选规范 - 部署开发构建

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