初始化swarm
172.16.185.100为当前主机ip
docker swarm init --advertise-addr=172.16.185.100
创建节点并加入
当初始化后,会打印出下方的语句,直接使用下方语句到需要创建节点的主机执行即可
docker swarm join --token SWMTKN-1-026x4zlu8arskm1es48g14w6awjwc09tgl1ko2vkpi6vopse4b-48t53de9f3hukw1l4o5ttr2x5 172.16.185.100:2377
查看节点信息
在初始化主机上执行下方指令可以查看当前节点信息
docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
0m9s001t3puq2uueoke90jhbd * docker100 Ready Active Leader 19.03.5
0dtzzo5p4w6vb5ywhbgezh408 docker101 Ready Active 19.03.5
57u9uu83yy00wxiqgnrw79rsi docker102 Ready Active 19.03.5
集群高可用
如果docker100节点出问题了,这个集群就没法用了,这时候我们可以把docker101及docker102也升级为manager节点,此时,如果docker100挂掉后,会从docker101和docker102中选举出一个节点变成新的Leader
docker node promote docker101
docker node promote docker102
创建网络
创建一个名叫demo的overlay网络,用于不同节点间容器的通信
[root@docker100 ~]# docker network create -d overlay demo
[root@docker100 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
93a0126a6b4f bridge bridge local
nz6t68gh28eo demo overlay swarm
da2008ab5921 docker-compose_my-bridge bridge local
7a7052c65c43 docker_gwbridge bridge local
e3a3355edaaa host host local
d3n309moc23j ingress overlay swarm
6adee247bc35 none null local
创建服务
--replicas:创建多少个容器 ,2为创建2个
--name:指定容器名称
--network:指定网络
docker service create --replicas 2 --name service_test --network demo nginx:alpine
查看服务
ls:查看当前有哪些服务
ps:指定查看service 部署情况
root@docker100 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
xr9j9c4t2hz9 service_test replicated 2/2 nginx:alpine
[root@docker100 ~]# docker service ps service_test
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
xm0omnuj9fho service_test.1 nginx:alpine docker100 Running Running 2 minutes ago
m1x00d9aqjpz service_test.2 nginx:alpine docker101 Running Running 2 minutes ago
水平扩展
当感觉service不够用时,可以水平扩展
service_test=3,扩展service名称为servcie_test的数量为3个
docker service scale service_test=3
[root@docker100 ~]# docker service ps service_test
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
xm0omnuj9fho service_test.1 nginx:alpine docker100 Running Running 6 minutes ago
m1x00d9aqjpz service_test.2 nginx:alpine docker101 Running Running 6 minutes ago
wv73nnrf5iog service_test.3 nginx:alpine docker102 Running Running 21 seconds ag
服务发现与自动恢复
手动删除或关闭运行中的容器,过几秒之后就能发现 Swarm 会自动创建新的容器来顶替失效的容器。
常用命令
- docker swarm 命令用于管理 Swarm 群集
命令 | 描述 |
---|---|
docker swarm init | 初始化一个 swarm 群集 |
docker swarm join | 加入群集作为节点或管理器 |
docker swarm join-token | 管理用于加入群集的令牌 |
docker swarm leave | 离开 swarm 群集 |
docker swarm unlock | 解锁 swarm 群集 |
docker swarm unlock-key | 管理解锁钥匙 |
docker swarm update | 更新 swarm 群集 |
- docker node 命令用于管理 Swarm 群集中的机器节点
命令 | 描述 |
---|---|
docker node demote | 从 swarm 群集管理器中降级一个或多个节点 |
docker node inspect | 显示一个或多个节点的详细信息 |
docker node ls | 列出 swarm 群集中的节点 |
docker node promote | 将一个或多个节点推入到群集管理器中 |
docker node ps | 列出在一个或多个节点上运行的任务,默认为当前节点 |
docker node rm | 从 swarm 群集删除一个或多个节点 |
docker node update | 更新一个节点 |
- docker service 命令用于管理 Swarm 群集中的服务
命令 | 描述 |
---|---|
docker service create | 创建服务 |
docker service inspect | 显示一个或多个服务的详细信息 |
docker service logs | 获取服务的日志 |
docker service ls | 列出服务 |
docker service rm | 删除一个或多个服务 |
docker service scale | 设置服务的实例数量 |
docker service update | 更新服务 |
docker service rollback | 恢复服务至 update 之前的配置 |