1.下载镜像
root@ebs-26932:~# docker pull swarm Using default tag: latest latest: Pulling from library/swarm d85c18077b82: Pull complete 1e6bb16f8cb1: Pull complete 85bac13497d7: Pull complete Digest: sha256:b866583a3b8791bcd705b7bc0fd94c66b695a1a2dbaeb5f59ed29940e5015dc8 Status: Downloaded newer image for swarm:latest docker.io/library/swarm:latest
可以使用下面的命令来查看swarm,验证是否成功下载了swarm镜像
root@ebs-26932:~# docker run --rm swarm -v swarm version 1.2.9 (527a849)
2.配置节点
docker主机在加入swarm集群之前,需要进行一些简单配置,添加docker daemon到网络监听,例如,在启动docker daemon的时候通过-H参数
sudo docker daemon -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
如果时通过服务方式启动,则需要修改服务的配置文件
vi /etc/default/docker DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock"
3.启动集群
docker集群管理需要使用服务发现(service discover)功能,swarm支持以下几种方式:
docker hub/本地文件/etcd/consul/zookeeper和手动指定节点IP地址信息等
本地配置集群推荐使用consul
(1)启动consul服务后端
root@ebs-26932:~# docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
(2)启动管理节点
首先启动一个主管理节点,映射到主机的4000端口,并获取所在主机地址为<manage0_ip>其中4000端口时swarm管理器的默认监听端口,用户也可以指定映射为其他端口
docker run -d -p 4000:4000 swarm manage -H 4000 --replication --advertise <manage0_ip>:4000 consul://<consul_ip>:8500
为了提高可用性还可以启动从管理节点,假定获取躲在主机地址为<mange1_ip>:
docker run -d -p 4000:4000 swarm manage -H 4000 --replication --advertise <manage1_ip>:4000 consul://<consul_ip>:8500
(3)启动工作节点
需要在每个工作节点上启动agent服务,获取节点的主机地址为<node_ip>,并指定前面获取到的consul服务地址
root@ebs-26932:~# docker run -d swarm join --adverties=<node_ip>:2375 consul://<consul_ip>:8500 7ead0cc8664938fdd37cfc114ae34a8004211d28e090db60b1e2ff7454ca626b