Docker Compose 的历史与发展
此页面提供:
- Docker Compose CLI 发展简史
- 对构成 Compose V1 和 Compose V2 的主要版本和文件格式的清晰说明
- Compose V1 和 Compose V2 之间的主要区别
介绍

上图显示,当前支持的 Docker Compose CLI 版本是 Compose V2,该版本由 Compose 规范定义。
它还提供文件格式、命令行语法和顶层元素差异的快速概览。以下内容将对此进行更详细的介绍。
Docker Compose CLI 版本控制
Docker Compose 命令行Binaries的第一个版本于 2014 年首次发布。它使用 Python 编写,并通过 docker-compose 调用。
通常,Compose V1 项目在 compose.yml 文件中包含一个顶层的 version 元素,其值范围从 2.0 到 3.8,这些值对应特定的
文件格式。
Docker Compose 命令行工具的第二版于 2020 年发布,采用 Go 语言编写,并通过 docker compose 调用。
Compose V2 会忽略 compose.yml 文件中的 version 顶层元素。
Compose 文件格式版本控制
Docker Compose 命令行界面由特定的文件格式定义。
已发布三个主要版本的 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 还利用了可选规范——
部署、
开发 和
构建。
为了使 迁移更加容易,Compose V2 对于在 Compose 文件格式 2.x/3.x 与 Compose 规范之间已被弃用或更改的某些元素提供了向后兼容性。