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.yaml 文件中包含一个顶级 version 元素,其值范围从 2.03.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 还使用了可选规范 - DeployDevelopBuild

为了简化迁移,Compose V2 对 Compose 文件格式 2.x/3.x 和 Compose 规范之间已弃用或更改的某些元素提供了向后兼容性。

页面选项