教程
Swarm Mode部署
Swarm简介
Swarm 是Docker的原生集群工具,Swarm使用标准的Docker API,这意味着容器能够使用 docker run 命令启动,Swarm会选择合适的主机来运行容器,这也意味着其他使用Docker API的工具比如 Compose 和 bespoke脚本 也能使用Swarm,从而利用集群而不是在单个主机上运行。
Swarm的基本架构很简单:每个主机运行一个Swarm代理,一个主机运行Swarm管理器(在测试的集群中,这个主机也可以运行代理),这个管理器负责主机上容器的编排和调度。Swarm能以高可用性模式(etcd 、 Consul 或 ZooKeeper 中任何一个都可以用来将故障转移给后备管理器处理)运行。当有新主机加入到集群,有几种不同的方式来发现新加的主机,在Swarm中也就是 discovery 。默认情况下使用的是token,也就是在Docker Hub上会储存一个主机地址的列表。
部署Swarm Mode
部署Swarm Mode之前,您需绑定Docker到指定TCP端口,参考:Compose应用->资源池配置。
本文档以ubuntu 14.04操作系统为例,在172.16.17.11、192.168.17.124两台主机上部署Swarm Mode。其中172.16.17.11为主节点,192.168.17.124为子节点。
-
在172.16.17.11上执行如下命令设置172.16.17.11为manage。
docker swarm init --listen-addr 172.16.17.11 docker swarm join-token --rotate worker
可以看到如下信息
Successfully rotated worker join token.
To add a worker to this swarm, run the following command:
docker swarm join —token SWMTKN-1-0velpgoh1rgws30497sm55az01darmlji77hembfrxtkafirvq-0zybv26gbvstngl4cyk5py5u3 172.16.17.11:2377 -
在192.168.17.124上执行上一步输出的命令,将192.168.17.124加入到swarm mode作为worker。此处为:
docker swarm join --token SWMTKN-1-0velpgoh1rgws30497sm55az01darmlji77hembfrxtkafirvq-0zybv26gbvstngl4cyk5py5u3 172.16.17.11:2377
如下图看到This node joined a swarm as a worker表示加入成功。如果添加失败,请参考附录->常见问题解答问题13:Swarm_Mode添加worker节点报错解决办法。
-
在主节点172.16.17.11上执行如下命令查看Swarm Mode的节点列表。
docker node ls
可以看到类似如下信息:
备注:
如果您需要删除某一个worker节点,您可以在主节点172.16.17.11上执行如下命令,您需将节点ID替换成具体节点的ID。节点ID可通过docker node ls命令查看。docker node rm [节点ID]
e.g.: