以下命令均在root下执行
开始前,请确保docker、docker-compose已安装完成,如若未安装的请参考前一篇文章
《Linux下docker、docker-compose安装》
1. 服务器列表
IP | 名称 | hostname |
---|---|---|
192.168.0.86 | manager86 | manager86 |
192.168.0.87 | manager87 | manager87 |
192.168.0.88 | manager88 | manager88 |
2.修改服务器的docker的hostname显示名
manager86 :
hostnamectl set-hostname manager86
service docker restart
manager87 :
hostnamectl set-hostname manager87
service docker restart
manager88 :
hostnamectl set-hostname manager88
service docker restart
3. 开放三台服务器的端口
端口号 | 用途 | TCP | UDP |
---|---|---|---|
2375 | 远程访问端口 | √ | × |
2377 | 管理端口 | √ | × |
7946 | 节点间通信端口 | √ | √ |
2377 | overlay网络端口 | √ | √ |
3.1. 在三台服务器上都开放端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
3.2. 重启防火墙
firewall-cmd --reload
3.3. 查看防火墙列表
firewall-cmd --permanent --zone=public --list-ports
4. 搭建docker swarm集群
4.1. 使用manager86服务器启动docker swarm集群
docker swarm init --advertise-addr 192.168.0.86
4.2. 在manager86服务器上获取加入集群的命令
docker swarm join-token manager
4.3. 在87和88两台机器上运行加入集群的命令
docker swarm join --token SWMTKN-1-4whl9smubatrx9d0scij35ux2riiw9g0l1b4lcmlpibxak6lgm-39r87sxlo305b3aiwbj0hf88f 192.168.0.86:2377
4.4. 查看docker swarm集群情况
docker node ls
能看到86,87,88三台服务器集群即表示集群搭建成功
5. 其他相关命令
退出集群:docker swarm leave -f
启动服务:docker stack deploy -c xxxx.yml xxxx
删除:docker stack rm xxx
查看各个服务运行的主机信息:docker stack ps xxx
查看集群上在运行的所有服务:docker service ls
查看服务xxx:docker service ps xxx
查看xxx服务的详细信息:docker service inspect xxx
删除xxx服务:docker service rm xxx
滚动查看xxx的日志(xxxx为容器id):docker service logs --f xxx
增加或减少集群节点(指定集群的节点数):docker service scale xxx=2
离开节点:docker swarm leave worker
离开节点:docker swarm leave --force manager
查看容器信息:docker inspect 4puyfwumkzj2
查看各个容器运行在哪个服务器:docker stack ps xxx
服务关闭:docker service scale xfgl_elasticsearch2=0
设置服务2个实例:docker service scale xfgl_elasticsearch2=2
进入容器:docker exec -it 容器id /bin/bash