上一篇介绍了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 run --rm -v /tmp/my_cluster:/tmp/my_cluster swarm list file:///tmp/my_cluster
查看集群的详细信息
$ docker -H tcp://172.16.71.43:2376 info
然后我们可以用下面的命令操作集群了
$ 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