Docker Compose 與 Docker Stack 非常類似。它能夠在 Docker 節點上,以單引擎模式(Single-Engine Mode)進行多容器應用的部署和管理。
多數的現代應用通過多個更小的服務互相協同來組成一個完整可用的應用。比如一個簡單的示例應用可能由如下 4 個服務組成。
? Web前端。
? 訂單管理。
? 品類管理。
? 后臺數據庫。
將以上服務組織在一起,就是一個可用的應用。
部署和管理繁多的服務是困難的。而這正是 Docker Compose 要解決的問題。
Docker Compose 并不是通過腳本和各種冗長的 docker 命令來將應用組件組織起來,而是通過一個聲明式的配置文件描述整個應用,從而使用一條命令完成部署。
應用部署成功后,還可以通過一系列簡單的命令實現對其完整聲明周期的管理。甚至,配置文件還可以置于版本控制系統中進行存儲和管理。
Docker Compose 的前身是 Fig。Fig 是一個由 Orchard 公司開發的強有力的工具,在當時是進行多容器管理的最佳方案。
Fig 是一個基于 Docker 的 Python 工具,允許用戶基于一個 YAML 文件定義多容器應用,從而可以使用 fig 命令行工具進行應用的部署。
Fig 還可以對應用的全生命周期進行管理。
內部實現上,Fig 會解析 YAML 文件,并通過 Docker API 進行應用的部署和管理。
在 2014 年,Docker 公司收購了 Orchard 公司,并將 Fig 更名為 Docker Compose。
命令行工具也從 fig 更名為 docker-compose,并自此成為綁定在 Docker 引擎之上的外部工具。
雖然它從未完全集成到 Docker 引擎中,但是仍然受到廣泛關注并得到普遍使用。
直至今日,Docker Compose 仍然是一個需要在 Docker 主機上進行安裝的外部 Python 工具。
使用它時,首先編寫定義多容器(多服務)應用的 YAML 文件,然后將其交由 docker-compose 命令處理,Docker Compose 就會基于 Docker 引擎 API 完成應用的部署。