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命令行二进制文件的第一个版本于2014年发布。它是用Python编写的,并使用docker-compose调用。通常,Compose V1项目在compose.yml文件中包含一个顶级version元素,其值范围从2.03.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规范之间已弃用或更改的元素。