一、docker swarm部署
部署架構圖:
1.1.docker swarm初始化
1.1.docker swarm-manager初始化
[root@docker-2-120 ~]# docker swarm init --advertise-addr 192.168.2.120 Swarm initialized: current node (shyex5019e84dup8kjwgy9esj) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-2nioyk01u61y4xju7z13ngr70zglt5w0hj2bpfnn9l7d3lso34-c45yo9ivt30qmai0lp3zyb3ks 192.168.2.120:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
1.1.2.docker manager查看節點
[root@docker-2-120 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION shyex5019e84dup8kjwgy9esj * docker-2-120 Ready Active Leader 18.09.0
#暫時只有管理節點
1.2.添加work節點
1.2.1.在dm1上執行:
[root@dm1 /]# docker swarm join --token SWMTKN-1-2nioyk01u61y4xju7z13ngr70zglt5w0hj2bpfnn9l7d3lso34-c45yo9ivt30qmai0lp3zyb3ks 192.168.2.120:2377 This node joined a swarm as a worker.
1.2.2.在dm2上執行:
[root@dm2 ~]# docker swarm join --token SWMTKN-1-2nioyk01u61y4xju7z13ngr70zglt5w0hj2bpfnn9l7d3lso34-c45yo9ivt30qmai0lp3zyb3ks 192.168.2.120:2377 This node joined a swarm as a worker.
1.2.3.在manger節點上查看:
[root@docker-2-120 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 32ak19ny1nib5woq9wfij5cz4 dm1 Ready Active 18.09.0 jhf5lcacfdun78t4tie3dt0zy dm2 Ready Active 18.09.0 shyex5019e84dup8kjwgy9esj * docker-2-120 Ready Active Leader 18.09.0
二、部署service
2.1.在manager上運行nginx鏡像的service
[root@docker-2-120 ~]# docker service create --name "ckl_web" nginx
2.1.1.查看service
[root@docker-2-120 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS v3ifjb3k2yye ckl_web replicated 1/1 nginx:latest
#ID:serviceID
#NAME :名稱
#REPLICAS :當前的副本數量
#IMAGE :鏡像名詞
#PORTS:端口
2.1.2.查看副本狀態
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS cb1cv5dgqfrh ckl_web.1 nginx:latest docker-2-120 Running Running 59 seconds ago
查看容器運行:
[root@docker-2-120 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES acb5a7377b4f nginx:latest "nginx -g 'daemon of…" About a minute ago Up About a minute 80/tcp ckl_web.1.cb1cv5dgqfrhrt2bdpk8elzhw
2.2.提升副本,模擬負載均衡
2.2.1.在manager上執行
[root@docker-2-120 ~]# docker service scale ckl_web=6 ckl_web scaled to 6 overall progress: 6 out of 6 tasks 1/6: running [==================================================>] 2/6: running [==================================================>] 3/6: running [==================================================>] 4/6: running [==================================================>] 5/6: running [==================================================>] 6/6: running [==================================================>] verify: Service converged
2.2.2.查看擴展後副本信息
[root@docker-2-120 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS v3ifjb3k2yye ckl_web replicated 6/6 nginx:latest
查看容器運行節點:
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS cb1cv5dgqfrh ckl_web.1 nginx:latest docker-2-120 Running Running 7 minutes ago wbx0wbr9w8tq ckl_web.2 nginx:latest dm1 Running Running about a minute ago mviu588mulo2 ckl_web.3 nginx:latest dm2 Running Running about a minute ago ltnuyjpbj4eo ckl_web.4 nginx:latest dm2 Running Running about a minute ago lil6pq81fnaa ckl_web.5 nginx:latest docker-2-120 Running Running about a minute ago ap36bx8k6y65 ckl_web.6 nginx:latest dm1 Running Running about a minute ago
#目前正好均勻的運行在三個節點上,每個節點2個容器運行
2.2.3.如果只希望容器運行在worker節點
[root@docker-2-120 ~]# docker node update --availability drain docker-2-120 docker-2-120
2.2.4.查看node節點狀態
[root@docker-2-120 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 32ak19ny1nib5woq9wfij5cz4 dm1 Ready Active 18.09.0 jhf5lcacfdun78t4tie3dt0zy dm2 Ready Active 18.09.0 shyex5019e84dup8kjwgy9esj * docker-2-120 Ready Drain Leader 18.09.0
2.2.5.查看service運行
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS q5d9hbtzfszp ckl_web.1 nginx:latest dm1 Running Running 2 minutes ago cb1cv5dgqfrh \_ ckl_web.1 nginx:latest docker-2-120 Shutdown Shutdown 2 minutes ago wbx0wbr9w8tq ckl_web.2 nginx:latest dm1 Running Running 9 minutes ago mviu588mulo2 ckl_web.3 nginx:latest dm2 Running Running 9 minutes ago ltnuyjpbj4eo ckl_web.4 nginx:latest dm2 Running Running 9 minutes ago ij9dt6fjjmhy ckl_web.5 nginx:latest dm2 Running Running 2 minutes ago lil6pq81fnaa \_ ckl_web.5 nginx:latest docker-2-120 Shutdown Shutdown 2 minutes ago ap36bx8k6y65 ckl_web.6 nginx:latest dm1 Running Running 9 minutes ago
#原來manager節點運行的容器已經被分攤到dm1和dm2上了
2.3.減少副本
2.3.1.減少副本數
[root@docker-2-120 ~]# docker service scale ckl_web=4 ckl_web scaled to 4 overall progress: 4 out of 4 tasks 1/4: running [==================================================>] 2/4: 3/4: running [==================================================>] 4/4: running [==================================================>] verify: Service converged
2.3.2.查看service
[root@docker-2-120 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS v3ifjb3k2yye ckl_web replicated 4/4 nginx:latest
#副本數爲4
2.3.3.查看容器運行節點
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS q5d9hbtzfszp ckl_web.1 nginx:latest dm1 Running Running 7 minutes ago cb1cv5dgqfrh \_ ckl_web.1 nginx:latest docker-2-120 Shutdown Shutdown 7 minutes ago wbx0wbr9w8tq ckl_web.2 nginx:latest dm1 Running Running 14 minutes ago mviu588mulo2 ckl_web.3 nginx:latest dm2 Running Running 14 minutes ago ltnuyjpbj4eo ckl_web.4 nginx:latest dm2 Running Running 14 minutes ago lil6pq81fnaa ckl_web.5 nginx:latest docker-2-120 Shutdown Shutdown 7 minutes ago
三、故障轉移
swarm內置failover策略可以實現故障轉移
模擬dm1宕機
3.1.查看node節點狀態
[root@docker-2-120 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 32ak19ny1nib5woq9wfij5cz4 dm1 Down Active 18.09.0 jhf5lcacfdun78t4tie3dt0zy dm2 Ready Active 18.09.0 shyex5019e84dup8kjwgy9esj * docker-2-120 Ready Drain Leader 18.09.0 #dm1階段狀態爲down
3.2.查看service狀態
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS rs3ntbl74en3 ckl_web.1 nginx:latest dm2 Running Running 2 minutes ago q5d9hbtzfszp \_ ckl_web.1 nginx:latest dm1 Shutdown Running 25 minutes ago cb1cv5dgqfrh \_ ckl_web.1 nginx:latest docker-2-120 Shutdown Shutdown 25 minutes ago kwctm7bg4jha ckl_web.2 nginx:latest dm2 Running Running 2 minutes ago wbx0wbr9w8tq \_ ckl_web.2 nginx:latest dm1 Shutdown Running 33 minutes ago mviu588mulo2 ckl_web.3 nginx:latest dm2 Running Running 32 minutes ago ltnuyjpbj4eo ckl_web.4 nginx:latest dm2 Running Running 32 minutes ago lil6pq81fnaa ckl_web.5 nginx:latest docker-2-120 Shutdown Shutdown 25 minutes ago
#運行在dm1上的容器,已都轉移到dm2上了,故障節點狀態是shutdown
四、訪問docker service
4.1.在manager上部署service
[root@docker-2-120 ~]# docker service create --name "ckl_nginx" --replicas=2 nginx
4.2.service運行節點
[root@docker-2-120 ~]# docker service ps ckl_nginx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS p28o2lobduog ckl_nginx.1 nginx:latest dm2 Running Running 29 seconds ago 38yanzwce36u ckl_nginx.2 nginx:latest dm1 Running Running 28 seconds ago
4.3.在dm1查看容器
[root@dm1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6a835035f35f nginx:latest "nginx -g 'daemon of…" 51 seconds ago Up 49 seconds 80/tcp ckl_nginx.2.38yanzwce36uf007j0okvctus
查看容器並訪問:
[root@dm1 ~]# curl http://10.8.95.2 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
4.4.端口映射,外網訪問service
[root@docker-2-120 ~]# docker service update --publish-add 8000:80 ckl_nginx
查看service狀態:
[root@docker-2-120 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS ggjfmz39jzj7 ckl_nginx replicated 2/2 nginx:latest *:8000->80/tcp
[root@docker-2-120 ~]# docker service ps ckl_nginx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS r84wybzu2zez ckl_nginx.1 nginx:latest dm2 Running Running 27 seconds ago p28o2lobduog \_ ckl_nginx.1 nginx:latest dm2 Shutdown Shutdown 29 seconds ago t5xln1zllf3i ckl_nginx.2 nginx:latest dm1 Running Running 30 seconds ago 38yanzwce36u \_ ckl_nginx.2 nginx:latest dm1 Shutdown Shutdown 32 seconds ago
外網訪問:
查看docker網絡:
[root@docker-2-120 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 9a316505e6c8 bridge bridge local bf0464ee4b94 ckl_net bridge local 33a5e13e7f47 ckl_net1 bridge local aed4e7c4891e host host local 43z63iliw2ok ingress overlay swarm #swarm創建的overlay網絡 cf895048ef39 none null local
五、service 之間通信
5.1.創建overlay網絡
[root@docker-2-120 ~]# docker network create --driver overlay ckl_ov p6qmkf3jlbgescuwurwalu5me
[root@docker-2-120 ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 9a316505e6c8 bridge bridge local bf0464ee4b94 ckl_net bridge local 33a5e13e7f47 ckl_net1 bridge local p6qmkf3jlbge ckl_ov overlay swarm #創建的新網絡 aed4e7c4891e host host local 43z63iliw2ok ingress overlay swarm cf895048ef39 none null local
5.2.創建web service
[root@docker-2-120 ~]# docker service create --name "ckl_web" --replicas=3 --network ckl_ov nginx anlm52hs5p12efn5wras7h65v
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS tiqpv81m6icb ckl_web.1 nginx:latest dm2 Running Running about a minute ago tl3i10w296kk ckl_web.2 nginx:latest dm1 Running Running about a minute ago zdxxqy8zwnvt ckl_web.3 nginx:latest dm2 Running Running about a minute ago
5.3.創建centos service
[root@docker-2-120 ~]# docker service create --name "ckl_cent" --network ckl_ov centos sleep 10000 xut1xxmsp42mw4thixvd4iqt2 #兩個service屬於同一overlay網絡
查看service狀態:
[root@docker-2-120 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS xut1xxmsp42m ckl_cent replicated 1/1 centos:latest anlm52hs5p12 ckl_web replicated 3/3 nginx:latest
[root@docker-2-120 ~]# docker service ps ckl_cent ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS fzs6ejkhangm ckl_cent.1 centos:latest dm1 Running Running 59 seconds ago
5.4.在dm1上測試連通
[root@dm1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 710f6b55400d centos:latest "sleep 10000" About a minute ago Up About a minute ckl_cent.1.fzs6ejkhangm3r0eh8v46zljx 5f0c2ba01f88 nginx:latest "nginx -g 'daemon of…" About an hour ago Up About an hour 80/tcp ckl_web.2.tl3i10w296kks0qnh0ri8i0i4
[root@dm1 ~]# docker exec -it 710f6b55400d /bin/bash [root@710f6b55400d /]# [root@710f6b55400d /]# [root@710f6b55400d /]# ping -c3 ckl_web PING ckl_web (10.0.0.2) 56(84) bytes of data. 64 bytes from 10.0.0.2 (10.0.0.2): icmp_seq=1 ttl=64 time=0.122 ms 64 bytes from 10.0.0.2 (10.0.0.2): icmp_seq=2 ttl=64 time=0.168 ms 64 bytes from 10.0.0.2 (10.0.0.2): icmp_seq=3 ttl=64 time=0.120 ms --- ckl_web ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.120/0.136/0.168/0.025 ms
#10.0.0.2是service 的VIP
在dm1上查看ip:
[root@dm1 ~]# docker inspect 5f0c2ba01f88 | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "10.0.0.4",
在dm2上查看ip:
[root@dm2 ~]# docker inspect `docker ps | grep ckl_web | awk '{print $1}'` | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "10.0.0.5", "SecondaryIPAddresses": null, "IPAddress": "", "IPAddress": "10.0.0.3",
#對於ckl_cent只需要知道webservice 的名詞就可以訪問,而不需要知道serviceip
六、swarm 升級副本
6.1.查看當前服務
[root@docker-2-120 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS xut1xxmsp42m ckl_cent replicated 1/1 centos:latest anlm52hs5p12 ckl_web replicated 3/3 nginx:latest
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS tiqpv81m6icb ckl_web.1 nginx:latest dm2 Running Running 16 hours ago tl3i10w296kk ckl_web.2 nginx:latest dm1 Running Running 16 hours ago zdxxqy8zwnvt ckl_web.3 nginx:latest dm2 Running Running 16 hours ago
6.2.升級副本
部署service,在worker節點上要預先存在的鏡像,下面測試以及預先pull過
6.2.1.部署service服務
[root@docker-2-120 ~]# docker service create --name "ckl_web" --replicas=3 nginx:1.2.1 image nginx:1.2.1 could not be accessed on a registry to record its digest. Each node will access nginx:1.2.1 independently, possibly leading to different nodes running different versions of the image. vnwqr4prkgmqtrpagp3tu9c4n overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged
查看service狀態:
[root@docker-2-120 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS xut1xxmsp42m ckl_cent replicated 1/1 centos:latest vnwqr4prkgmq ckl_web replicated 3/3 nginx:1.2.1
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS vma7lxxn29gw ckl_web.1 nginx:1.2.1 dm2 Running Running 2 minutes ago xiubyfckzete ckl_web.2 nginx:1.2.1 dm2 Running Running 2 minutes ago gmysmkahj6bz ckl_web.3 nginx:1.2.1 dm1 Running Running 2 minutes ago
6.2.2.將service更新到1.2.2
[root@docker-2-120 ~]# [root@docker-2-120 ~]# docker service update --image nginx:1.2.2 ckl_web image nginx:1.2.2 could not be accessed on a registry to record its digest. Each node will access nginx:1.2.2 independently, possibly leading to different nodes running different versions of the image. ckl_web overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged
查看service狀態:
[root@docker-2-120 ~]# docker service ps ckl_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS s9b3pzrzvhgj ckl_web.1 nginx:1.2.2 dm2 Running Running 15 seconds ago vma7lxxn29gw \_ ckl_web.1 nginx:1.2.1 dm2 Shutdown Shutdown 16 seconds ago r1cp4b4c2yqb ckl_web.2 nginx:1.2.2 dm2 Running Running 11 seconds ago xiubyfckzete \_ ckl_web.2 nginx:1.2.1 dm2 Shutdown Shutdown 13 seconds ago t21saofxe7ai ckl_web.3 nginx:1.2.2 dm1 Running Running 18 seconds ago gmysmkahj6bz \_ ckl_web.3 nginx:1.2.1 dm1 Shutdown Shutdown 20 seconds ago #三個副本都已經升級到1.2.2
6.2.3.查看更新配置
[root@docker-2-120 ~]# docker service inspect ckl_web .... }, "UpdateConfig": { "Parallelism": 1, #一次並行,更新副本數量 "FailureAction": "pause", "Monitor": 5000000000, "MaxFailureRatio": 0, "Order": "stop-first" }, ....
6.2.4.設置並行更新副本的數量及更新延遲時間
--update-parallelism 設置並行更新副本的個數
--update-delay 設置更新間隔時長
模擬副本爲6個,並行更新數量爲2,延遲爲50s
[root@docker-2-120 ~]# docker service update --replicas=6 --update-parallelism 2 --update-delay=30s --image nginx:2.2.1 ckl_web image nginx:2.2.1 could not be accessed on a registry to record its digest. Each node will access nginx:2.2.1 independently, possibly leading to different nodes running different versions of the image. ckl_web overall progress: 6 out of 6 tasks 1/6: running [==================================================>] 2/6: running [==================================================>] 3/6: running [==================================================>] 4/6: running [==================================================>] 5/6: running [==================================================>] 6/6: running [==================================================>] verify: Service converged
6.2.5.查看更新結果
6.2.6.查看當前service配置
[root@docker-2-120 ~]# docker service inspect --pretty ckl_web ID: mrntpv6h7nv1cm08rt3j4she4 Name: ckl_web Service Mode: Replicated Replicas: 6 UpdateStatus: State: completed Started: 4 minutes ago Completed: 3 minutes ago Message: update completed Placement: UpdateConfig: Parallelism: 2 #並行更新數量 Delay: 30s #更新時間間隔 On failure: pause Monitoring Period: 5s Max failure ratio: 0 Update order: stop-first RollbackConfig: Parallelism: 1 On failure: pause Monitoring Period: 5s Max failure ratio: 0 Rollback order: stop-first ContainerSpec: Image: nginx:2.2.1 Init: false Resources: Endpoint Mode: vip
6.2.7.更新回退
更新完畢後,如果想回退則只能回退到上一次更新版本使用參數--rollback
[root@docker-2-120 ~]# docker service update --rollback ckl_web ckl_web rollback: manually requested rollback overall progress: rolling back update: 3 out of 3 tasks 1/3: running [> ] 2/3: running [> ] 3/3: running [> ] verify: Service converged
查看回退結果:
運行了三個副本,版本爲1.2.2
七、設置service mode
service 除了replicated mode還有global mode,global mode運行每個host只能運行一個副本
7.1.創建service指定mode
[root@docker-2-120 ~]# docker service create --mode global --name "ckl_http" httpd 29bwhe6v2nltogg059svx6u3j overall progress: 2 out of 2 tasks 32ak19ny1nib: running [==================================================>] jhf5lcacfdun: running [==================================================>] verify: Service converged
[root@docker-2-120 ~]# docker service inspect ckl_http --pretty ID: 29bwhe6v2nltogg059svx6u3j Name: ckl_http Service Mode: Global #mode Placement: UpdateConfig: Parallelism: 1 On failure: pause Monitoring Period: 5s Max failure ratio: 0 Update order: stop-first RollbackConfig: Parallelism: 1 On failure: pause Monitoring Period: 5s Max failure ratio: 0 Rollback order: stop-first ContainerSpec: Image: httpd:latest@sha256:1a25dda4141b143ca018490fb4f64ce9aa8acb16c2660a7aa395db9fe4ae1793 Init: false Resources: Endpoint Mode: vip
八、使用label來控制service運行位置
要想控制service運行位置必須滿足:爲node定義label;設置service運行的label node
8.1.設置dm1爲test環境
[root@docker-2-120 ~]# docker node update --label-add env=test dm1 dm1
查看dm1詳情:
8.2.將dm2設置爲prod環境
[root@docker-2-120 ~]# docker node update --label-add env=prod dm2 dm2
查看dm2詳情:
8.3.部署service到測試環境
[root@docker-2-120 ~]# docker service create --constraint node.labels.env==test --replicas 3 --name "ckl_test_web" --publish 8000:80 nginx uoirr9a9no2lbuozo9qajj7gr overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged
[root@docker-2-120 ~]# docker service ps ckl_test_web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS xwd5kcug0fxg ckl_test_web.1 nginx:latest dm1 Running Running 40 seconds ago 6w4rbz13ls2w ckl_test_web.2 nginx:latest dm1 Running Running 40 seconds ago mkmglm5eroa6 ckl_test_web.3 nginx:latest dm1 Running Running 40 seconds ago
8.4.更新service,遷移到生產環境
8.4.1.刪除原來的constraint
[root@docker-2-120 ~]# docker service update --constraint-rm node.labels.env==test ckl_test_web ckl_test_web overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged
8.4.2.更新constraint到生產環境
[root@docker-2-120 ~]# docker service update --constraint-add node.labels.env==prod ckl_test_web ckl_test_web overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>] verify: Service converged
8.4.3.查看服務狀態
8.4.4.constraint結合global mode
比如在生產環境中獲取某些文件內容
[root@docker-2-120 ~]# docker service create --mode global --constraint node.labels.env==prod --name "ckl_pro_http" httpd gc5wse0q9q7exqz6yqky2mdiz overall progress: 1 out of 1 tasks jhf5lcacfdun: running [==================================================>] verify: Service converged
參考:https://docs.docker.com/engine/reference/commandline/service_create/#create-a-service-with-a-rolling-update-policy