Docker Compose 的歷史與發展

此頁面提供

  • Docker Compose CLI 開發簡史
  • 清楚說明組成 Compose V1 和 Compose V2 的主要版本和檔案格式
  • Compose V1 和 Compose V2 之間的主要差異

簡介

Image showing the main differences between Compose V1 and 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 規格之間已棄用或變更的某些元素。