Docker Swarm命令及使用总结
一、简介
Docker Swarm 是Docker官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker资源。
二、名词解释
三、准备
虚拟机三台,分别安装Docker并启动服务。服务网格信息如下:
主机名 | 操作系统 | IP | Node |
vm-xwj100 | Centos7.6 | 192.168.20.100 | manager |
vm-xwj101 | Centos7.6 | 192.168.20.101 | worker |
vm-xwj102 | Centos7.6 | 192.168.20.102 | worker |
三、Swarm命令
1、初始化manager节点:
docker swarm init --advertise-addr 192.168.20.100
会看到初始化成功,当前节点为manager节点。并且也提示了增加其它worker或者manager节点的命令,如下所示:
2、在 vm-xwj101 和 vm-xwj102 主机上,作为一个worker节点加入swarm集群(复制上面的信息):
docker swarm join --token SWMTKN-1-0szs8b7mg7ui5wtxlqcsp8ifr5yguvhw8314xd8v7o1zkro2t4-2qt8j8uqikxtb7tkdrypwqbw0 192.168.20.100:2377
3、在manager节点,执行命令获取令牌(其它节点可以通过该令牌加入到集群中):
docker swarm join-token manager #作为一个manager加入
docker swarm join-token worker #作为一个worker加入
可以看到worker节点的令牌,和第一步是一样的
4、当前节点离开集群:
docker swarm leave
四、node命令
注意:只有 manager 节点才可以执行 docker node 相关命令
1、查看集群中的节点信息:
docker node ls
2、删除集群中的节点:
docker node rm 节点名称
可选参数:
-f #强制删除节点(没有该参数只能删除已下线的节点)
3、将节点从 worker 升级为 manager:
docker node promote 节点名称
4、将节点从 manager 降级为 worker:
docker node demote 节点名称
五、service命令
注意:只有 manager 节点才可以执行 docker service 相关命令
1、启动服务:
docker service create [可选参数] 镜像名称
可选参数:
- --name my-nginx #设置容器名称
- --replicas 5 #副本数量(默认为1)
- -p #指定服务端口(主机端口:容器端口)
2、查看正在运行的服务
docker service ls
可以看到当前服务有3个副本以及镜像等信息
3、查看某个服务运行状态
docker service ps 服务名称
可以看到每个节点上都有一个docker容器在运行(这个是随机分配的)。在每个节点上,直接docker ps 也可以看到容器的运行情况
4、停止并删除某个服务(删除服务后,镜像也会全部被删除):
docker service rm 服务名称
5、修改某个服务副本数(扩缩容):
docker service update --replicas 3 服务名称
6、对某个服务扩缩容:
docker service scale 服务名称=副本数
六、测试
集群中的任何一台主机都可以访问容器内的应用。在浏览器中分别访问100、101、102三台主机的8888端口,都可以看到nginx的页面:
七、踩过的坑
1、如果节点加入集群失败,需要执行如下操作:
2、扩容时,出现如下界面: