Docker Compose 的歷史與發展
本頁面內容:
- Docker Compose CLI 的發展簡史
- 關於 Compose v1 與 Compose v2 所涉及的主要版本與檔案格式之清晰說明
- Compose v1 與 Compose v2 之間的主要差異
簡介

上圖顯示目前支援的 Docker Compose CLI 版本為 Compose v2,該版本由 Compose 規格 (Compose Specification) 所定義。
本頁也快速概述了檔案格式、命令列語法以及頂層元素的差異。後續章節會有更詳細的說明。
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 檔案格式版本:
- Compose 檔案格式 1:隨 2014 年的 Compose 1.0.0 發布
- Compose 檔案格式 2.x:隨 2016 年的 Compose 1.6.0 發布
- Compose 檔案格式 3.x:隨 2017 年的 Compose 1.10.0 發布
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 也使用了選用的規格:部署 (Deploy)、開發 (Develop) 以及 建構 (Build)。
為了讓 遷移 更容易,Compose v2 對某些在 Compose 檔案格式 2.x/3.x 與 Compose 規格之間已被棄用或變更的元素提供了向後相容性。