1、manager节点创建 在决定作为manager节点的机器中执行下面的命令docker swarm init--advertise-addr 192.168.117.128 该参数的作用是指定manager节点的ip地址,该参数可不写上面执行成功之后有一句输出是: docker swarm join --token SWMTKN-1-2zji96p1mbmzmgq2tm6slb3r48zadhcpbcfkvqrm1umsfr03u0-7jf3i9s9uuy9zitvz957ii35w 192.168.117.128:2377 这句命令就是想要将机器加入到manager节点的集群中需要执行的命令。 2、将worker节点加入到集群中 在两台worker节点的机器中分别执行下面的命令docker swarm join --token SWMTKN-1-2zji96p1mbmzmgq2tm6slb3r48zadhcpbcfkvqrm1umsfr03u0-7jf3i9s9uuy9zitvz957ii35w 192.168.117.128:2377即刚刚创建manager节点提示的命令。 有可能会遇到以下报错: Error response from daemon: rpc error: code = Unavailable desc = connection error: desc = “transport: Error while dialing dial tcp 192.168.117.128:2377: connect: no route to host” 意思是不能和 192.168.117.128:2377 通信,但是我们在创建这三台Linux机器的时候使用ping命令保证了这三台机器可以通信,其实这里主要就是Docker swarm使用了2377端口进行通信,但是2377端口未在防火墙中打开,导致不能通信的,所以解决办法两种:一种是关闭manager节点防火墙,一种是manager节点防火墙放开2377端口,如果manager节点是阿里云服务器需要在安全组中放开2377端口。systemctl stop firewalld.service  #关闭防火墙
firewall-cmd --zone=public --add-port=2377/tcp --permanent  #防火墙放开2377端口
firewall-cmd --reload  #刷新防火墙,不论是关闭防火墙还是放开某个端口都需要刷新才会生效
firewall-cmd --list-all --permanent  #查看防火墙放开了哪些端口
systemctl status firewalld.service  #查看防火墙状态然后在worker节点中再次执行上面的join命令,就可以成功将worker节点加入到Docker swarm的集群中。 3、查看集群中有哪些节点加入docker node ls  #该命令只能在manager节点中执行 这样我们需要的三台机器搭建的集群就成功了。
使用docker stack命令运行yml文件:docker stack deploy -c yml文件 服务名称 如:docker stack deploy -c service.yml test-servicedocker stack命令官方文档docker-compose.yml文件官方文档