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

下一步是什麼?