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.yml` 檔案中包含頂層 `version` 元素,其值範圍從 `2.0` 到 `3.8`,指的是特定的 檔案格式。
Docker Compose 命令列二進位檔的第二版於 2020 年發佈,它是用 Go 編寫的,並使用 `docker compose` 呼叫。Compose V2 會忽略 `compose.yml` 檔案中的頂層 `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 規格之間已棄用或變更的某些元素。