创建一个集群
[vagrant@node1 ~]$ docker swarm init --advertise-addr 192.168.9.101
Swarm initialized: current node (9fv7wb4zve235hltmchxprez7) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-1wk8aduuxnay6ek866xaj31ixqnsib56b3p65hpzpcbbzo1qla-alcf8l1n7qpv7h7d6hg35scni 192.168.9.101:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
查看网络
[vagrant@node1 ~]$ docker network ls NETWORK ID NAME DRIVER SCOPE 83c5df0f97ac bridge bridge local 7d81897af218 docker_gwbridge bridge local b13ca5d9c552 host host local 0vfhc5c85dwi ingress overlay swarm c427f9d683f4 none null local
分别在另外两台上面执行
[vagrant@node2 ~]$ docker swarm join --token SWMTKN-1-1wk8aduuxnay6ek866xaj31ixqnsib56b3p65hpzpcbbzo1qla-alcf8l1n7qpv7h7d6hg35scni 192.168.9.101:2377 This node joined a swarm as a worker.
[vagrant@node3 ~]$ docker swarm join --token SWMTKN-1-1wk8aduuxnay6ek866xaj31ixqnsib56b3p65hpzpcbbzo1qla-alcf8l1n7qpv7h7d6hg35scni 192.168.9.101:2377 This node joined a swarm as a worker.
查看集群节点
[vagrant@node1 ~]$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 9fv7wb4zve235hltmchxprez7 * node1 Ready Active Leader 19.03.5 lypcp8z6s2boi2897ni0g5oc5 node2 Ready Active 19.03.5 o0hmpgi59tms2lt65wlgzivpn node3 Ready Active 19.03.5
提升node2,node3 为备用master,高可用
[vagrant@node1 ~]$ docker node promote node2 [vagrant@node1 ~]$ docker node promote node3
查看效果:
[vagrant@node1 ~]$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 9fv7wb4zve235hltmchxprez7 * node1 Ready Active Leader 19.03.5 lypcp8z6s2boi2897ni0g5oc5 node2 Ready Active Reachable 19.03.5 o0hmpgi59tms2lt65wlgzivpn node3 Ready Active 19.03.5
创建服务
[vagrant@node1 ~]$ docker service create --name test1 alpine ping www.baidu.com i5lip5az4w5ehv28q2fn3jxji overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged [vagrant@node1 ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS i5lip5az4w5e test1 replicated 1/1 alpine:latest
创建nginx服务
vagrant@node1 ~]$ docker service create --name nginx nginx m511a51xd6js4lflrrtr91vf7 overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 0 out of 1 tasks overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged
爆过 8080服务
[vagrant@node1 ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS m511a51xd6js nginx replicated 1/1 nginx:latest i5lip5az4w5e test1 replicated 1/1 alpine:latest
[vagrant@node1 ~]$ docker service update --publish-add 8080:80 nginx nginx overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged [vagrant@node1 ~]$
扩容:
[vagrant@node1 ~]$ docker service scale nginx=3 nginx scaled to 3 overall progress: 3 out of 3 tasks 1/3: running [==================================================>] 2/3: running [==================================================>] 3/3: running [==================================================>]
删除服务:
[vagrant@node1 ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS m511a51xd6js nginx replicated 3/3 nginx:latest *:8080->80/tcp i5lip5az4w5e test1 replicated 1/1 alpine:latest [vagrant@node1 ~]$ docker service rm nginx nginx [vagrant@node1 ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS i5lip5az4w5e test1 replicated 1/1 alpine:latest
创建网络
[vagrant@node1 ~]$ docker network ls NETWORK ID NAME DRIVER SCOPE 83c5df0f97ac bridge bridge local 7d81897af218 docker_gwbridge bridge local b13ca5d9c552 host host local 0vfhc5c85dwi ingress overlay swarm c427f9d683f4 none null local meps4tilzidi test_tanzi-overlay overlay swarm [vagrant@node1 ~]$ docker network connect create disconnect inspect ls prune rm [vagrant@node1 ~]$ docker network create -d overlay tanzi-overlay p3ssr7hpilfr1k6qry6tp8nc5
创建服务并指定网络
[vagrant@node1 ~]$ docker service create --network tanzi-overlay --name nginx -p 8080:80 nginx p3b79k42mvex1op5mwk9zfg1z overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged [vagrant@node1 ~]$ docker service create --network tanzi-overlay --name alpine alpine ping www.baidu.com 34tkwuppcgb5pqppj1zx22hhr overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged
定义一种不给外面访问的dnsrr的访问模式
[vagrant@node1 ~]$ docker service create --name nginx-b --endpoint-mode dnsrr nginx
u9snzqigr65x9xwb131jkm1ao
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
更新一个服务
[vagrant@node1 ~]$ docker service update --network-add tanzi-overlay nginx-b nginx-b overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged
定一个组,确定依赖关系:
[vagrant@node1 ~]$ docker stack services nginx test2 [vagrant@node1 ~]$ docker stack services nginx ID NAME MODE REPLICAS IMAGE PORTS 7ti9w26od1i3 nginx_nginx replicated 1/1 nginx:latest *:8080->80/tcp cl1awlwzmxaq nginx_alpine replicated 1/1 alpine:latest [vagrant@node1 ~]$ docker stack deploy -c test.yml nginx Updating service nginx_alpine (id: cl1awlwzmxaqybwyz09a3sr5t) Updating service nginx_nginx (id: 7ti9w26od1i3yec6jmxcalwfz) [vagrant@node1 ~]$ docker stack services "docker stack services" requires exactly 1 argument. See 'docker stack services --help'. Usage: docker stack services [OPTIONS] STACK List the services in the stack [vagrant@node1 ~]$ docker stack services ls Nothing found in stack: ls [vagrant@node1 ~]$ docker stack services nginx test2 [vagrant@node1 ~]$ docker stack services test2 ID NAME MODE REPLICAS IMAGE PORTS celxgkxf3z31 test2_alpine replicated 1/1 alpine:latest [vagrant@node1 ~]$ docker stack services nginx ID NAME MODE REPLICAS IMAGE PORTS 7ti9w26od1i3 nginx_nginx replicated 1/1 nginx:latest *:8080->80/tcp cl1awlwzmxaq nginx_alpine replicated 1/1 alpine:latest
version: "3.7"
services:
nginx:
image: nginx
networks:
- "tanzi-overlay"
ports:
- "8080:80"
alpine:
image: alpine
networks:
- "tanzi-overlay"
command:
- "ping"
- "nginx"
deploy:
replicas: 1
restart_policy:
condition: on-failure
resources:
limits:
cpus: "0.1"
memory: 50M
depends_on:
- nginx
networks:
tanzi-overlay:
external: true