Docker Compose 的历史和发展
本页提供
- Docker Compose CLI 开发简史
- Compose V1 和 Compose V2 主要版本和文件格式的清晰解释
- Compose V1 和 Compose V2 的主要区别
简介


上图显示当前支持的 Docker Compose CLI 版本是 Compose V2,它由 Compose 规范 定义。
它还提供了文件格式、命令行语法和顶级元素的快速概览。这些内容将在以下部分中更详细地介绍。
Docker Compose CLI 版本控制
Docker Compose 命令行二进制文件的版本一于 2014 年首次发布。它用 Python 编写,通过 docker-compose
调用。通常,Compose V1 项目在 compose.yaml
文件中包含一个顶级 version
元素,其值范围从 2.0
到 3.8
,这些值指的是特定的 文件格式。
Docker Compose 命令行二进制文件的版本二于 2020 年发布,用 Go 编写,通过 docker compose
调用。Compose V2 忽略 compose.yaml
文件中的顶级 version
元素。
Compose 文件格式版本控制
Docker Compose CLI 由特定的文件格式定义。
Compose V1 的 Compose 文件格式发布了三个主要版本
- 2014 年发布的 Compose 1.0.0 中的 Compose 文件格式 1
- 2016 年发布的 Compose 1.6.0 中的 Compose 文件格式 2.x
- 2017 年发布的 Compose 1.10.0 中的 Compose 文件格式 3.x
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 还使用了可选规范 - Deploy、Develop 和 Build。
为了简化迁移,Compose V2 对 Compose 文件格式 2.x/3.x 和 Compose 规范之间已弃用或更改的某些元素提供了向后兼容性。