Docker swarm 使用笔记

###########docker swarm ###############配置
https://docs.docker.com/engine/swarm/manage-nodes/
https://docs.docker.com/engine/swarm/manage-nodes/#promote-or-demote-a-node
####################################


1,docker 1.12 版本以上
manager-192.168.120.131
work-192.168.120.132

1.管理端执行;
[root@docker-manager ~]# docker swarm init --advertise-addr 192.168.120.131
或者 docker swarm init --listen-addr 192.168.18.131:2377
Swarm initialized: current node (0qo8kjtlwpaymmlor6zl8wc9n) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0wsk4hmv66dje8f5h7fv4bzs99i8lw999nu3i29cy5nlzoczjb-bb35ylrnwfmk2vl6f8wtxs8ur \
192.168.120.131:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Swarm集群端口, Docker Swarm集群开放了三个端口:
2377端口, 用于集群管理通信
7946端口, 用于集群节点之间的通信
4789端口, 用于overlay网络流量
[root@docker-manager ~]# firewall-cmd --zone=public --add-port=7946/tcp --permanent
[root@docker-manager ~]# firewall-cmd --zone=public --add-port=4789/tcp --permanent
[root@docker-manager ~]# firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=10.10.92.0/24 accept'
查看集群节点信息;
[root@docker-manager ~]# docker node ls
ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
329rf0jsxjezl4k3qnr11xtmp *  docker-manager  Ready   Active        Leader
7dcx2xlrc3zgo6x8d9u17tjy1    docker-work     Ready   Active
db6rjsszjn5z5cxwowwxisf6n    docker-work     Down    Active
[root@docker-manager ~]#
在Docker Swarm集群中,在删除Docker集群节点后,集群中该节点仍然存在,但是状态显示为Down, 需要在Swarm的Manager节点执行以下命令, 删除已经移除的Worker节点:
[root@centos7-Master ~]# docker node rm --force 4ukr7ghj4iuvb89gu0g5ok1d
4ukr7ghj4iuvb89gu0g5ok1d


2.3.2 更新Swarm集群节点
如果需要对Docker Swarm节点进行更新,需要在manager节点上执行命令:
[root@centos7-Master ~]# docker swarm update
Swarm updated.
3.3.3 获取 work 节点token
[root@docker-manager ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-607nbmlndpzmch1hdqtnpzhqrx4eufyt3cwfrr6ne3ge9iexdt-5xmz1ecalg9bhp3hiioy1n9ge \
192.168.120.131:2377
3.3.4 获取manage 节点信息;
[root@docker-manager ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-607nbmlndpzmch1hdqtnpzhqrx4eufyt3cwfrr6ne3ge9iexdt-5z4j7n2sn97zelbgvtm3uck3b \
192.168.120.131:2377


3.3.4 停机维护;
[root@docker-manager ~]# docker node update --availability drain docker-manager ########主机名称########
[root@docker-manager ~]# docker node ls
ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
329rf0jsxjezl4k3qnr11xtmp *  docker-manager  Ready   Drain         Leader
7dcx2xlrc3zgo6x8d9u17tjy1    docker-work     Ready   Active


3.3.5 开启状态;
[root@docker-manager ~]# docker node update --availability active docker-manager #######主机名称########
docker-manager
[root@docker-manager ~]# docker node ls
ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
329rf0jsxjezl4k3qnr11xtmp *  docker-manager  Ready   Active        Leader
7dcx2xlrc3zgo6x8d9u17tjy1    docker-work     Ready   Active

3.3.6 升级角色;(manger )
[root@docker-manager ~]# docker node promote docker-work
Node docker-work promoted to a manager in the swarm.
[root@docker-manager ~]# docker node ls
ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
329rf0jsxjezl4k3qnr11xtmp *  docker-manager  Ready   Active        Leader
7dcx2xlrc3zgo6x8d9u17tjy1    docker-work     Ready   Active        Reachable


3.3.7 降级角色;
[root@docker-manager ~]# docker node demote docker-work
Manager docker-work demoted in the swarm.
[root@docker-manager ~]# docker node ls
ID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUS
329rf0jsxjezl4k3qnr11xtmp *  docker-manager  Ready   Active        Leader
7dcx2xlrc3zgo6x8d9u17tjy1    docker-work     Ready   Active


3.3.8 清除work 记录:
docker node rm 主机名


3.3.9 创建service;
[root@docker-manager ~]# docker service create --name my_web nginx
ezqmbbrsn4ecz975u2baajnoc


3.3.10 查看service
[root@docker-manager ~]# docker service ls
ID            NAME    REPLICAS  IMAGE  COMMAND
ezqmbbrsn4ec  my_web  0/1       nginx
[root@docker-manager ~]# docker service ps my_web
ID                         NAME      IMAGE  NODE            DESIRED STATE  CURRENT STATE                 ERROR
1a1diqyh70ot9wquf0yuvt0q3  my_web.1  nginx  docker-manager  Running        Preparing about a minute ago

3.3.11 删除service
[root@docker-manager ~]# docker service rm helloworld
[root@docker-manager ~]# docker service rm my_web


3.3.12 创建副本;
docker service create --replicas 3 --name web-nginx2 ping g.cn

3.3.13 扩容;scale
[root@docker-manager ~]# docker service scale helloworld=5
helloworld scaled to 5
[root@docker-manager ~]# docker service ls
ID            NAME        REPLICAS  IMAGE   COMMAND
8d6yob2chojp  helloworld  1/5       alpine  ping docker.com

3.3.14 减少:
[root@docker-manager ~]# docker service scale helloworld=2
helloworld scaled to 5
[root@docker-manager ~]# docker service ls
8d6yob2chojp  helloworld  0/1       alpine  ping docker.com

3.3.15 滚动更新服务;
[root@docker-manager ~]# docker service update  --image helloworld.1.2 helloworld
helloworld

.3.16 更新节点状态;(节点自动迁移)
[root@docker-manager ~]# docker node update --availability drain docker-work
docker-work

3.3.17
######################(节点恢复)############
[root@docker-manager ~]# docker node update --availability  active docker-work
[root@docker-manager ~]#docker service scale hellowrold=0
[root@docker-manager ~]#docker service scale hellowrold=4

3.18 Docker swarm mode overlay network security model
[root@docker-manager ~]# docker network ls
[root@docker-manager ~]# docker network create --driver overlay --subnet 10.10.10.0/24 --opt encrypted my-network
8mrnvm0rv7gdca48lazvyd8k8
创建服务 加入网络
[root@docker-manager ~]# docker service create --name my-web --replicas 3 --network my-network bazhuazhu/nginx
d660tgracne49w5q1mk36y0lf


服务端口暴露;                                             本机端口:容器端口
[root@docker-manager ~]# docker service update --publish-add 8080:80 my-web 服务名称
3.3.16 更新节点状态;
2.work 客户端执行;
(1).添加到集群;
[root@docker-work ~]#  docker swarm join     --token SWMTKN-1-607nbmlndpzmch1hdqtnpzhqrx4eufyt3cwfrr6ne3ge9iexdt-5xmz1ecalg9bhp3hiioy1n9ge     192.168.120.131:2377
This node joined a swarm as a worker.
(2).查看work 信息;
[root@docker-manager ~]# docker node inspect 7dcx2xlrc3zgo6x8d9u17tjy1 --pretty
(3).删除Swarm集群节点
[root@centos7-WorkerA ~]# docker swarm leave
Node left the swarm.
(4).如果想在Docker Swarm集群中删除Docker的节点, 需要在须删除的Docker节点下执行命令:

3.3.19 更新节点状态;

2.work 客户端执行;

(1).添加到集群;

[root@docker-work ~]#  docker swarm join     --token SWMTKN-1-607nbmlndpzmch1hdqtnpzhqrx4eufyt3cwfrr6ne3ge9iexdt-5xmz1ecalg9bhp3hiioy1n9ge     192.168.120.131:2377

This node joined a swarm as a worker.

(2).查看work 信息;

[root@docker-manager ~]# docker node inspect 7dcx2xlrc3zgo6x8d9u17tjy1 --pretty

(3).删除Swarm集群节点

[root@centos7-WorkerA ~]# docker swarm leave

Node left the swarm.

(4).如果想在Docker Swarm集群中删除Docker的节点, 需要在须删除的Docker节点下执行命令


猜你喜欢

转载自blog.51cto.com/breaklinux/2150203
今日推荐