swarm-m.example.com(192.168.8.101)
swarm-a1.example.com(192.168.8.102)
swarm-a2.example.com(192.168.8.103)
说明:swarm支持多种discovery方式
Docker
Hub内置的服务发现功能,这也是官网示例演示的方式
本地的静态文件描述集群(static file
describing the cluster)
zookeeper和一些静态的ip列表(a static
list of ips)
[root@swarm-m ~]#
docker run --rm swarm list --help
Usage:
swarm list [OPTIONS]
List
nodes in a cluster
Arguments:
discovery service to use
[$SWARM_DISCOVERY]
* token://
* consul:///
* etcd://,/
*
file://path/to/file
* zk://,/
* [nodes://],
Options:
--timeout "10s" timeout period
--discovery-opt [--discovery-opt option --discovery-opt option]
discovery options
示例:
--discovery
dockerhost01:2375,dockerhost02:2375,dockerhost03:2375
--discovery
file:///opt/swarm_config
--discovery
zk://zkhost01,zkhost02,zkhost03/swarm
--discovery
etcd://etcdhost01/swarm
--discovery
consul://consulhost01/swarm
一.安装docker
二.拉取swarm镜像
docker pull swarm
方式一:本地的静态文件描述集群
配置swarm
manager
swarm-m.example.com(192.168.8.101)
cat
>/opt/swarm_cluster<<HERE
192.168.8.102:2375
192.168.8.103:2375
HERE
docker run -tid
--restart=always
-p 3375:3375
-h swarm-m
--name=swarm-m
-v /opt/swarm_cluster:/.swarm/swarm_cluster
swarm manage -H 0.0.0.0:3375
file:///.swarm/swarm_cluster
添加swarm
agent
swarm-a1.example.com(192.168.8.102)
cat
>/opt/swarm_cluster<<HERE
192.168.8.102:2375
192.168.8.103:2375
HERE
docker run -tid
--restart=always
-h swarm-a1
--name=swarm-a1
-v /opt/swarm_cluster:/.swarm/swarm_cluster
swarm join --addr=192.168.8.102:2375
file:///.swarm/swarm_cluster
swarm-a2.example.com(192.168.8.103)
cat
>/opt/swarm_cluster<<HERE
192.168.8.102:2375
192.168.8.103:2375
HERE
docker run -tid
--restart=always
-h swarm-a2
--name=swarm-a2
-v /opt/swarm_cluster:/.swarm/swarm_cluster
swarm join --addr=192.168.8.103:2375
file:///.swarm/swarm_cluster
[root@swarm-m ~]#
docker run --rm -v
/opt/swarm_cluster:/.swarm/swarm_cluster swarm list
file:///.swarm/swarm_cluster
192.168.8.102:2375
192.168.8.103:2375
[root@swarm-m ~]#
docker logs -f $(docker ps|grep swarm|awk '{print $1}')
INFO[0000]
Listening for HTTP
addr=0.0.0.0:3375
proto=tcp
INFO[0120]
Registered Engine swarm-a2.example.com at
192.168.8.103:2375
INFO[0120]
Registered Engine swarm-a1.example.com at
192.168.8.102:2375
ERRO[0653]
Update engine specs failed: Cannot connect to the Docker daemon. Is
the docker daemon running on this host?
id=RXMY:7YIE:NFVP:KG7T:COMZ:ERUA:PQ36:MX65:KVEN:MJWJ:A2S5:WMMW
name=swarm-a2.example.com
ERRO[0685]
Flagging engine as unhealthy. Connect failed 3
times id=5S52:3JBP:R7LI:JUUN:3BN6:UDQY:OFAH:2RUB:6VZ3:QRPU:PIE5:XDFF
name=swarm-a1.example.com
ERRO[0686]
Flagging engine as unhealthy. Connect failed 3
times id=RXMY:7YIE:NFVP:KG7T:COMZ:ERUA:PQ36:MX65:KVEN:MJWJ:A2S5:WMMW
name=swarm-a2.example.com
ERRO[0686]
Update engine specs failed: Cannot connect to the Docker daemon. Is
the docker daemon running on this host?
id=RXMY:7YIE:NFVP:KG7T:COMZ:ERUA:PQ36:MX65:KVEN:MJWJ:A2S5:WMMW
name=swarm-a2.example.com
ERRO[0739]
Update engine specs failed: Cannot connect to the Docker daemon. Is
the docker daemon running on this host?
id=RXMY:7YIE:NFVP:KG7T:COMZ:ERUA:PQ36:MX65:KVEN:MJWJ:A2S5:WMMW
name=swarm-a2.example.com
ERRO[0739]
Update engine specs failed: Cannot connect to the Docker daemon. Is
the docker daemon running on this host?
id=5S52:3JBP:R7LI:JUUN:3BN6:UDQY:OFAH:2RUB:6VZ3:QRPU:PIE5:XDFF
name=swarm-a1.example.com
ERRO[0804]
Update engine specs failed: Cannot connect to the Docker daemon. Is
the docker daemon running on this host?
id=RXMY:7YIE:NFVP:KG7T:COMZ:ERUA:PQ36:MX65:KVEN:MJWJ:A2S5:WMMW
name=swarm-a2.example.com
INFO[0816]
Engine came back to life after 4 retries.
Hooray! id=5S52:3JBP:R7LI:JUUN:3BN6:UDQY:OFAH:2RUB:6VZ3:QRPU:PIE5:XDFF
name=swarm-a1.example.com
INFO[0895]
Engine came back to life after 5 retries.
Hooray! id=RXMY:7YIE:NFVP:KG7T:COMZ:ERUA:PQ36:MX65:KVEN:MJWJ:A2S5:WMMW
name=swarm-a2.example.com
方式二:Docker Hub内置的服务发现功能
前提:swarm节点能与公网Docker Hub通信
配置swarm manager
1.创建集群discovery
token(--rm)
[root@swarm-m ~]# docker
run --rm swarm create
71296873eec3b86a4777054d66fdc164
2.创建并运行swarm manager容器
docker run -tid --restart=always
-p 3375:3375
-h swarm-m
--name=swarm-m
swarm manage -H 0.0.0.0:3375
token://71296873eec3b86a4777054d66fdc164
[root@swarm-m ~]#
docker logs -f swarm-m
INFO[0000]
Listening for HTTP
addr=0.0.0.0:3375
proto=tcp