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