Docker Compose 的历史和发展
本页提供:
- Docker Compose CLI 的发展简史
- 构成 Compose v1、v2 和 v5 的主要版本和文件格式的清晰解释
- Compose v1、v2 和 v5 之间的主要区别
简介
上图重点介绍了 Docker Compose v1、v2 和 v5 之间的关键区别。目前,受支持的 Docker Compose CLI 版本是 Compose v2 和 Compose v5,两者均由 Compose 规范 定义。
该图提供了文件格式、命令行语法和支持的顶级元素的高级比较。以下各节将更详细地介绍这些内容。
Docker Compose CLI 版本控制
Compose v1 于 2014 年首次发布。它用 Python 编写,通过 docker-compose 调用。
通常,Compose v1 项目在 compose.yaml 文件中包含一个顶级 version 元素,其值范围从 2.0 到 3.8,这些值指的是特定的 文件格式。
Compose v2 于 2020 年宣布,用 Go 编写,通过 docker compose 调用。
与 v1 不同,Compose v2 忽略 compose.yaml 文件中的 version 顶级元素,并完全依赖 Compose 规范来解释文件。
Compose v5 于 2025 年发布,在功能上与 Compose v2 相同。其主要区别是引入了官方的 Go SDK。该 SDK 提供了一个全面的 API,允许您将 Compose 功能直接集成到您的应用程序中,从而无需依赖 Compose CLI 即可加载、验证和管理多容器环境。为避免与标记为“v2”和“v3”的旧 Compose 文件格式混淆,版本号直接提升至 v5。
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 和 v5 使用 Compose 规范进行项目定义。与之前的文件格式不同,Compose 规范是滚动更新的,并使 version 顶级元素成为可选。Compose v2 和 v5 还利用了可选规范 -
Deploy、
Develop 和
Build。
为了使迁移更容易,Compose v2 和 v5 对某些在 Compose 文件格式 2.x/3.x 和 Compose 规范之间已被弃用或更改的元素提供了向后兼容性。