Docker Swarm 小服务,docker官方自带的
- 小型编排环境(3-10台服务器)
- 容器高可用
- 适合集群的
- 其中一个服务器挂了,会把服务迁移到其他服务器上
三个机器 都装docker
1.初始化#
#初始化manager(本地网卡的物理地址)
docker swarm init --advertise-addr 192.168.1.30
#获取token(获取添加命令)
docker swarm join --token SWMTKN-1-2yqc8ptjbfoynd7yzx49rtxmr1sawhawjj5nzvrx4zjnq39cj8-20x5tn1kmkmzu96gf1tv0vngt 192.168.1.30:2377
#列出swarm集群的节点
docker node ls

2.添加节点#
192.168.1.31
docker swarm join --token SWMTKN-1-2yqc8ptjbfoynd7yzx49rtxmr1sawhawjj5nzvrx4zjnq39cj8-20x5tn1kmkmzu96gf1tv0vngt 192.168.1.30:2377
192.168.1.32
docker swarm join --token SWMTKN-1-2yqc8ptjbfoynd7yzx49rtxmr1sawhawjj5nzvrx4zjnq39cj8-20x5tn1kmkmzu96gf1tv0vngt 192.168.1.30:2377
192.168.1.30(leader)
docker node ls
3.添加label#
leader挂了集群就挂了,防止这种情况 添加label
docker node ls
192.168.1.30(原来leader)
docker node update --label-add name=swarm-master docker-master
192.168.1.31
docker node update --label-add name=swarm-node01 docker-node01
192.168.1.33
docker node update --label-add name=swarm-node02 docker-node02
4.将其他节点提升为manager角色以实现高可用#
提升权限接管节点 node02 -> Reachable node03 -> Reachable
docker node promote docker-node01
docker node promote docker-node02
docker node ls
5.查看node信息#
docker node inspect docker-node02
#查看status是不是ready6.创建网络#
docker network create -d overlay --subnet=10.220.0.0/21 --gateway=10.220.0.1 --attachable docker-net01
docker network ls
docker inspect docker-net01
##docker network rm docker-net01
7.创建容器测试#
- 每个节点的8888都会被监听和k8s一样
- –replicas 2 维持容器在一个指定的服用的数量,而不会超(多了删一个),也不会少(少了添加一个)
#创建两个副本
docker service create --replicas 2 -p 8888:80 --network docker-net01 --name nginx harbor.123asd.com/docker/nginx:v1.28.0
docker service ls
docker service ps was8wdifeaa3
#关闭一个节点(测试这里用leader)
docker node ls
192.168.1.30
systemctl stop docker
192.168.1.31/33
docker node ls
#发现master状态是Unreachable(遥不可及的)
docker service ls
docker service ps was8wdifeaa3
#192.168.1.30
systemctl start docker
就算服务重新启动,leader也不会发生改变![[image-20251008232340866.png]]