"--cluster-store"和"--cluster-advertise"不起作用

fir*_*lyu 6 docker

我尝试用swarm和设置docker cluster consul.我有manager,host1host2.
我在经理上运行consulswarm manager容器.

$ docker run --rm -p 8500:8500 progrium/consul -server -bootstrap
$ docker run -d -p 2377:2375 swarm manage consul://<manager>:8500
Run Code Online (Sandbox Code Playgroud)

在host1和host2上,我用--cluster-store和修改守护进程选项--cluster-advertise,然后重新启动docker daemon.

host1
DOCKER_OPTS="--cluster-store=consul://<manager>:8500 --cluster-advertise=<host1>:2375"
host2
DOCKER_OPTS="--cluster-store=consul://<manager>:8500 --cluster-advertise=<host2>:2375"
Run Code Online (Sandbox Code Playgroud)

当我将host1和host2加入swarm时,它会失败.

host1 $ docker run --rm swarm join --advertise=<host1>:2375 consul://<manager>:8500
host2 $ docker run --rm swarm join --advertise=<host2>:2375 consul://<manager>:8500
Run Code Online (Sandbox Code Playgroud)

从swarm管理器日志中,它出错了.

time="2016-01-20T02:17:17Z" level=error msg="Get http://<host1>:2375/v1.15/info: dial tcp <host1>:2375: getsockopt: connection refused"
time="2016-01-20T02:17:20Z" level=error msg="Get http://<host2>:2375/v1.15/info: dial tcp <host2>:2375: getsockopt: connection refused"
Run Code Online (Sandbox Code Playgroud)

Auz*_*ias 0

您是否正在运行 consul 来进行多主机网络发现或 Swarm 代理发现?

您尝试检查过吗consul members?你为什么不跑去本地docker daemon连接然后领事成员呢?有什么理由不这样做呢?consulconsul join

我还建议使用静态文件方法来发现 Swarm 代理。我知道最快、最简单、最安全的意思!

你应该看看:如何在多主机之间创建docker覆盖网络?它可能会帮助你。