stack 將應用所包含的 service,依賴的 secret、voluem 等資源,以及它們之間的關系定義在一個 YAML 文件中。相比較手工執行命令或是腳本,stack 有明顯的優勢。
-
YAML 描述的是
What
,是 stack 最終要達到的狀態。
比如 service 有幾個副本?使用哪個 image?映射的端口是什么?而腳本則是描述如何執行命令來達到這個狀態,也就是How
。顯而易見,What
更直觀,也更容易理解。至於如何將What
翻譯成How
,這就是 Docker swarm 的任務了,用戶只需要告訴 Docker 想達到什么效果。 -
重復部署應用變得非常容易。
部署應用所需要的一切信息都已經寫在 YAML 中,要部署應用只需一條命令docker stack deploy
。stack 的這種自包含特性使得在不同的 Docker 環境中部署應用變得極其簡單。在開發、測試和生成環境中部署可以完全采用同一份 YAML,而且每次部署的結果都是一致的。 -
可以像管理代碼一樣管理部署。
YAML 本質上將應用的部署代碼化了,任何對應用部署環境的修改都可以通過修改 YAML 來實現。可以將 YAML 納入到版本控制系統中進行管理,任何對 YAML 的修改都會被記錄和跟蹤,甚至可以像評審代碼一樣對 YAML 執行 code review。應用部署不再是一個黑盒子,也不再是經驗豐富的工程師專有的技能,所以的細節都在 YAML 中,清晰可見。
Docker Swarm 的主題就討論到此,下一節我們開始學習 Kubernetes。
書籍:
1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html
2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html