3 月 052020
集群通信需要开放的端口及用途
TCP2377 集群管理通信 TCP/UDP7946 集群内节点间通信 UDP4789 overlay网络流量
在初始管理节点上创建Swarm集群
[root@server1 ~]# docker swarm init --advertise-addr 172.31.37.77 Swarm initialized: current node (51coubi9fdbxhggwk240jhd2o) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-03vu2g8soxmz0i75mbcp6k447zj5snxkibqnox4vgu7fbtu5mf-0qtsru4h7knuu9kf2ptwdpuns 172.31.37.77:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. [root@server1 ~]#
查看集群当前状态信息
[root@server1 ~]# docker info Swarm: active NodeID: 51coubi9fdbxhggwk240jhd2o Is Manager: true ClusterID: xtiv1qnkuegsvuog4yw7t6i61 Managers: 1 Nodes: 1 Default Address Pool: 10.0.0.0/8 SubnetSize: 24 Data Path Port: 4789 Orchestration: Task History Retention Limit: 5 [root@server1 ~]#
查看集群当前的节点信息
[root@server1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 51coubi9fdbxhggwk240jhd2o * server1 Ready Active Leader 19.03.7 [root@server1 ~]#
查询集群的加入配置信息(管理节点)
[root@server1 ~]# docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-03vu2g8soxmz0i75mbcp6k447zj5snxkibqnox4vgu7fbtu5mf-0qtsru4h7knuu9kf2ptwdpuns 172.31.37.77:2377 [root@server1 ~]#
将剩余节点加入集群(工作节点)
[root@server2 ~]# docker swarm join --token SWMTKN-1-03vu2g8soxmz0i75mbcp6k447zj5snxkibqnox4vgu7fbtu5mf-0qtsru4h7knuu9kf2ptwdpuns 172.31.37.77:2377 This node joined a swarm as a worker. [root@server2 ~]# [root@server3 ~]# docker swarm join --token SWMTKN-1-03vu2g8soxmz0i75mbcp6k447zj5snxkibqnox4vgu7fbtu5mf-0qtsru4h7knuu9kf2ptwdpuns 172.31.37.77:2377 This node joined a swarm as a worker. [root@server3 ~]# [root@server4 ~]# docker swarm join --token SWMTKN-1-03vu2g8soxmz0i75mbcp6k447zj5snxkibqnox4vgu7fbtu5mf-0qtsru4h7knuu9kf2ptwdpuns 172.31.37.77:2377 This node joined a swarm as a worker. [root@server4 ~]# [root@server5 ~]# docker swarm join --token SWMTKN-1-03vu2g8soxmz0i75mbcp6k447zj5snxkibqnox4vgu7fbtu5mf-0qtsru4h7knuu9kf2ptwdpuns 172.31.37.77:2377 This node joined a swarm as a worker. [root@server5 ~]#
查询集群节点状态
[root@server1 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION 51coubi9fdbxhggwk240jhd2o * server1 Ready Active Leader 19.03.7 pd0jygj230x1sw1e0h3cee9zt server2 Ready Active 19.03.7 avjy5atb5t31f7qp1wg91jcgf server3 Ready Active 19.03.7 z0tear836razrlw1ce39nkiyi server4 Ready Active 19.03.7 2mda4v4c09o646ia8i1b9i1em server5 Ready Active 19.03.7 [root@server1 ~]#
运行一个服务(Service)
[root@server1 ~]# docker service create --replicas 1 --name helloworld alpine ping docker.com 1fxvvocwsi8my58ttcnhg089i overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged [root@server1 ~]#
服务运行参数说明:
docker service create 创建服务(Service) --replicas 1 运行实例的数量 --name helloworld 服务名称 alpine ping docker.com 使用的镜像名称和执行的命令
查看服务运行状态
[root@server1 ~]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS 1fxvvocwsi8m helloworld replicated 1/1 alpine:latest [root@server1 ~]#
查看服务状态信息
[root@server1 ~]# docker service inspect --pretty helloworld ID: 1fxvvocwsi8my58ttcnhg089i Name: helloworld Service Mode: Replicated Replicas: 1 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: alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d Args: ping docker.com Init: false Resources: Endpoint Mode: vip [root@server1 ~]#
查看运行该服务的容器节点
[root@server1 ~]# docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS s32zfioxk1bg helloworld.1 alpine:latest server1 Running Running 9 minutes ago [root@server1 ~]#
在运行服务的容器节点上查看容器的运行详情
[root@server1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 690df1c6470f alpine:latest "ping docker.com" 11 minutes ago Up 11 minutes helloworld.1.s32zfioxk1bgzlbcqjz9c0a0l [root@server1 ~]#
调整服务中运行容器示例的保有数量
[root@server1 ~]# docker service scale helloworld=5 helloworld scaled to 5 overall progress: 5 out of 5 tasks 1/5: running [==================================================>] 2/5: running [==================================================>] 3/5: running [==================================================>] 4/5: running [==================================================>] 5/5: running [==================================================>] verify: Service converged [root@server1 ~]#
查看调整保有数量后的容器节点
[root@server1 ~]# docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS s32zfioxk1bg helloworld.1 alpine:latest server1 Running Running 15 minutes ago gp211qp0cwf1 helloworld.2 alpine:latest server4 Running Running 52 seconds ago j7542eiyux9x helloworld.3 alpine:latest server5 Running Running 52 seconds ago l8bl51j3ak3n helloworld.4 alpine:latest server2 Running Running 52 seconds ago jvvfztivyvqw helloworld.5 alpine:latest server3 Running Running 52 seconds ago [root@server1 ~]#
删除服务(管理节点)
[root@server1 ~]# docker service rm helloworld helloworld [root@server1 ~]# docker service inspect helloworld [] Status: Error: no such service: helloworld, Code: 1 [root@server1 ~]#