Get started with Docker Part 5 & 6
Dodkcer Get Started 隨手記。
Part 5: Stacks
A stack is a group of interrelated services that share dependencies, and can be orchestrated and scaled together. A single stack is capable of defining and coordinating the functionality of an entire application (though very complex applications may want to use multiple stacks).
stack 定義了一堆互相有關的 service,把 service 放在一個 stack 裡就可以一起操作、scale 等等。可以用一個 stack 來定義一個 application 的功能,比較複雜的 application 可能有多個 stack。
也就是可以把 application 拆分成多個 service 來運作,這些 service 可以只跑在一台機器上,也可以在 swarm 中跑在不同機器上。原本要做到這件事,要嘛要在一台機器上裝各種 server,要分散就得在多台機器上裝各自需要的 server,再不然就得裝 VM 起來做這些事,而且也沒有個統一的地方記錄各 service 的版本等等資訊(工人智慧…)。Docker 把 setup 開發及 production 環境跟 scale up 變得簡單很多。
More docker-compose.yml
part 3 寫的 docker-compose.yml
是定義只有一個 service 的 stack。下面是有兩個 service 分別為 visualizer
跟 redis
的 stack:
1 | version: "3" # compose file format version |
如果沒有做 volume mapping,container 的 disk 的 file 在 container 重開後會不見。
其他 compose file 設定可參考:Compose file reference。
修改 docker-compose.yml
後重新 deploy 只需 docker stack deploy -c docker-compose.yml <stack_name>
。
要結束整個 stack 的 service 則 docker stack rm <stack_name>
。
Part 6: Deploy your app
這篇是看你要用 Docker Enterprise 還是自己裝 Docker Engine - Community 進行開發及 deploy production。
開發環境跟 production 環境的 Docker 操作都一樣(只是執行的地方不一樣。