這裡記錄 Services 實作流程
在之前,要先透過 part2 建立了 image gordon/get-started:part2
在這裡,建立 docker-compose.yml ,透過 image 來產生五個重複的 container
version: "3"
services:
web:
# replace username/repo:tag with your name and image details
image: gordon/get-started:part2
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "4000:80"
networks:
- webnet
networks:
webnet:
接著先執行 swarm 初始化(這部分會在 part 4 介紹)
docker swarm init
接著,執行建立 service app 名稱為 getstartedlab
docker stack deploy -c docker-compose.yml getstartedlab
查看是否執行成功,以及是否有實作五個重複
docker service ls
在這裡,因為我們使用的都是同樣的名稱來命名,因此這裏可以查詢執行中的5個 service 項目
docker service ps getstartedlab_web
也可以查看 container 執行狀況,來確定是否有5個container正在執行
docker container ls -q
接下來可以訪問 http://localhost:4000
這裡可透過 curl 直接查看,可以發現這時已經自動分配到不同的service host
curl http://localhost:4000
curl http://localhost:4000
curl http://localhost:4000
curl http://localhost:4000
停止app
docker stack rm getstartedlab
結束 swarm 任務
docker swarm leave --force
底下則是一些常用命令,可作為參考
docker stack ls # List stacks or apps
docker stack deploy -c <composefile> <appname> # Run the specified Compose file
docker service ls # List running services associated with an app
docker service ps <service> # List tasks associated with an app
docker inspect <task or container> # Inspect task or container
docker container ls -q # List container IDs
docker stack rm <appname> # Tear down an application
docker swarm leave --force # Take down a single node swarm from the manager