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 規範之間已棄用或更改的某些元素具有向後相容性。