创建docker swarm集群的两种方式

时间:2021-10-03 04:45:09

上一篇介绍了dockers swarm的架构和特点,这次来学习下创建docker集群的两种方式。
假设有三台可用的服务器,且都安装了docker 和 swarm:
m1 172.16.71.43 (同时担任管理节点和普通节点)
m2 172.16.71.52
m3 172.16.72.5

方法一:静态文件配置集群信息

首先在m1上创建一个文件,描述组成集群的node。

$ echo 172.16.71.43:2375 >> /tmp/my_cluster
$ echo 172.16.71.52:2375 >> /tmp/my_cluster
$ echo 172.16.72.5:2375 >> /tmp/my_cluster

执行命令

$ docker run -d -p 2376:2375  -v /tmp/my_cluster:/tmp/my_cluster swarm manage file:///tmp/my_cluster

用ps命令查看容器id

$ docker ps

把容器的log调出来看一下有没有报错

$ docker logs <contains id>

创建docker swarm集群的两种方式
上图表示一切正常,用下面的命令查看下集群列表

$ docker run --rm -v /tmp/my_cluster:/tmp/my_cluster swarm list file:///tmp/my_cluster

创建docker swarm集群的两种方式
查看集群的详细信息

$ docker -H tcp://172.16.71.43:2376 info

创建docker swarm集群的两种方式
然后我们可以用下面的命令操作集群了

$ docker -H tcp://<swarm_ip:swarm_port> info
$ docker -H tcp://<swarm_ip:swarm_port> run ...
$ docker -H tcp://<swarm_ip:swarm_port> ps
$ docker -H tcp://<swarm_ip:swarm_port> logs ...
...

方法2 用docker hub的发现功能

(官方不建议用于生产环境)
首先确保创建集群的机器都安装了docker官方的swarm插件,且docker的tcp端口2375可用。

$ docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 

创建一个唯一的token

docker run --rm swarm create

在每个节点上运行

$ docker run -d swarm join --addr=<node_ip:2375> token://<cluster_id>

在管理节点上运行

docker run -d -p <manager_port>:2375 swarm manage token://<cluster_id>

O了,如果一切正常集群就创建成功了。
用下面命令查看集群的使用情况

$ docker -H tcp://<swarm_ip:swarm_port> info
$ docker -H tcp://<swarm_ip:swarm_port> run ...
$ docker -H tcp://<swarm_ip:swarm_port> ps
$ docker -H tcp://<swarm_ip:swarm_port> logs ...

enjoy!

官方文档还有两种方式创建swarm。
用KV分布式系统创建集群,支持etcd,consul,zookeeper。
用静态IP列表创建集群(和静态文件类似)。
官方还支持基于范围的IP配置,如10.0.0.[10:200]表示10.0.0.10到10.0.0.200

$ echo "10.0.0.[11:100]:2375"   >> /tmp/my_cluster

参考:https://docs.docker.com/swarm/discovery/