什麼是 stack?- 每天5分鐘玩轉 Docker 容器技術(111)
什麼是 stack?- 每天5分鐘玩轉 Docker 容器技術(111)
原創 CloudMan CloudMan 2017-12-27
第111篇
什麼是 stack?
什麼是 stack ?
在回答這個問題之前我們先回憶一下前面部署 WordPress 應用的過程:
-
首先建立 secret。
-
然後建立 MySQL service,這是 WordPress 依賴的服務。
-
最後建立 WordPress service。
也就是說,這個應用包含了兩個 service:MySQL 和 WordPress,它們之間有明確的依賴關係,必須先啟動 MySQL。
為了保證這個依賴關係,我們控制了 docker secret
和 docker service
命令的執行順序,只不過這個過程是手工完成的。
假如我們需要頻繁地在不同環境中部署 WordPress 應用,如果每次都手工執行效率就太低了,而且容易出錯。這是自動化的一個好機會,首先我們能想到的就是把這個過程寫成指令碼,大概內容如下:
稍微複雜一點的是第三步,通過 if
判斷 MySQL service 是否執行,如果是,則執行 WordPress service,否則通過 while
繼續等待,直到 MySQL 執行。
這個指令碼大體上能夠工作,實現了自動化,但有兩個缺點:
-
目前只有兩個 service,還比較簡單。現在的應用通常都包含多個 service,特別是採用 microservices 架構的應用,幾十個 service 是很正常的。用 shell 指令碼啟動和管理如此多的 service 將是一件非常有挑戰的任務。
-
用
while
和if
維護 service 之間的依賴關係也是很有挑戰的,容易出錯。而且如何判斷 service 正常執行也不是件容易的事,指令碼中只簡單檢查了 service 是否存在,並沒有考慮 service 的實際執行狀態。
我們希望有一種更高效和可靠的方法來部署基於 service 的應用,這就是 stack。
stack 包含一系列 service,這些 service 組成了應用。stack 通過一個 YAML 檔案定義每個 service,並描述 service 使用的資源和各種依賴。
WordPress 的 stack 版本
如果將前面 WordPress 用 stack 來定義,YAML 檔案可以是這樣:
YAML 是一種閱讀性很強的文字格式,上面這個 stack 中定義了三種資源:service、secret 和 volume。
① services
定義了兩個 service:db
和 wordpress
。
② secrets
定義了兩個 secret:db_password
和 db_root_password
,在 service db
和 wordpress
的定義中引用了這兩個 secret。
③ volumes
定義了一個 volume:db_data
,service db
使用了此 volume。
④ wordpress
通過 depends_on
指定自己依賴 db
這個 service。Docker 會保證當 db
正常執行後再啟動 wordpress
。
可以在 YAML 中定義的元素遠遠不止這裡看到的這幾個,完整列表和使用方法可參考文件 https://docs.docker.com/compose/compose-file/
stack 的 YAML 有了,下一節我們學習 stack 的相關操作。
書籍:
1.《每天5分鐘玩轉Docker容器技術》
https://item.jd.com/16936307278.html(點選“閱讀原文”直達)
2.《每天5分鐘玩轉OpenStack》
https://item.jd.com/12086376.html
相關文章
- 每天5分鐘玩轉Docker容器技術(二)Docker
- 每天5分鐘玩轉Docker容器技術(一)Docker
- 每天5分鐘玩轉Docker容器技術(三)Docker
- 每天5分鐘玩轉Docker容器技術(四)Docker
- 【Docker】(9)---每天5分鐘玩轉 Docker 容器技術之映象Docker
- Network Policy - 每天5分鐘玩轉 Docker 容器技術(171)Docker
- Prometheus Operator - 每天5分鐘玩轉 Docker 容器技術(177)PrometheusDocker
- PV & PVC - 每天5分鐘玩轉 Docker 容器技術(150)Docker
- 回收 PV - 每天5分鐘玩轉 Docker 容器技術(152)Docker
- 每天5分鐘玩轉容器技術(1)
- Helm 架構 - 每天5分鐘玩轉 Docker 容器技術(161)架構Docker
- Kubernetes Dashboard - 每天5分鐘玩轉 Docker 容器技術(173)Docker
- 再次實踐 MySQL chart - 每天5分鐘玩轉 Docker 容器技術MySqlDocker
- 外部 Storage Provider - 每天5分鐘玩轉 Docker 容器技術(149)IDEDocker
- Liveness 探測 - 每天5分鐘玩轉 Docker 容器技術(143)Docker
- 並行執行 Job - 每天5分鐘玩轉 Docker 容器技術(134)並行Docker
- MySQL 使用 PV 和 PVC - 每天5分鐘玩轉 Docker 容器技術(154)MySqlDocker
- ELK 完整部署和使用 - 每天5分鐘玩轉 Docker 容器技術(90)Docker
- 通過 Service 訪問 Pod - 每天5分鐘玩轉 Docker 容器技術(136)Docker
- RUN vs CMD vs ENTRYPOINT - 每天5分鐘玩轉 Docker 容器技術(17)Docker
- 用 Weave Scope 監控叢集 - 每天5分鐘玩轉 Docker 容器技術(175)Docker
- 部署 Graylog 日誌系統 - 每天5分鐘玩轉 Docker 容器技術(92)Docker
- 如何用 Graylog 管理日誌? - 每天5分鐘玩轉 Docker 容器技術(93)Docker
- 萬能資料收集器 Fluentd - 每天5分鐘玩轉 Docker 容器技術(91)Docker
- 漫畫:容器技術docker是什麼?Docker
- Kubernetes 叢集日誌管理 - 每天5分鐘玩轉 Docker 容器技術(180)Docker
- 在滾動更新中使用 Health Check - 每天5分鐘玩轉 Docker 容器技術(146)Docker
- 用 k8s 管理機密資訊 - 每天5分鐘玩轉 Docker 容器技術(155)K8SDocker
- 十分鐘明白什麼是容器技術
- Docker是什麼技術?Docker容器具有哪些特點?Docker
- docker容器卷是什麼Docker
- Docker--容器技術Docker
- docker容器技術原理Docker
- vr全景技術是指什麼?什麼是vr全景技術?VR
- Docker技術( 容器虛擬化技術 )Docker
- Docker容器技術與Docker介紹Docker
- 容器技術之Docker映象Docker
- 玩轉docker之自定義PHP容器DockerPHP