這裡記錄 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