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 命令行Binaries的第一个版本于 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 命令行界面由特定的文件格式定义。

已发布三个主要版本的 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 规范之间已被弃用或更改的某些元素提供了向后兼容性。