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.yaml` 文件中包含一个顶级 `version` 元素,其值范围从 `2.0` 到 `3.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 还利用了可选规范 - 部署、开发和 构建。
为了使迁移更容易,Compose v2 对在 Compose 文件格式 2.x/3.x 和 Compose 规范之间已弃用或更改的某些元素具有向后兼容性。