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.yml
文件中包含一个顶级version
元素,其值范围从2.0
到3.8
,这些值指的是特定的文件格式。
Docker Compose命令行二进制文件的第二个版本于2020年发布,是用Go编写的,并使用docker compose
调用。Compose V2忽略compose.yml
文件中的顶级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还使用了可选规范——部署、开发和构建。
为了使迁移更容易,Compose V2向后兼容某些在Compose文件格式2.x/3.x和Compose规范之间已弃用或更改的元素。