【发布时间】:2016-11-21 23:32:37
【问题描述】:
我有 2 个虚拟机(IP 为 192.168.56.101 的 VM1 和 IP 为 192.16.56.102 的 VM2 可以相互 ping 通),这些是我正在执行的步骤:
- Create consul container on VM1 with 'docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap'
- Create swarm manager on VM1 with 'docker run -d -p 3376:3376 swarm manage -H 0.0.0.0:3376 --advertise 192.168.56.101:3376 consul://192.168.56.101:8500
- Create swarm agents on each VM with 'docker run -d swarm join --advertise <VM-IP>:2376 consul://192.168.56.101:8500
如果我运行 docker -H 0.0.0.0:3376 info 我可以看到两个节点都连接到 swarm 并且它们都很健康。我也可以运行容器并将它们安排到节点上。但是,如果我创建一个网络并将几个节点分配给该网络,然后通过 SSH 连接到一个节点并尝试 ping 其他每个节点,我只能访问在同一虚拟机上运行的节点。
两个虚拟机都有这些 DOCKER_OPTS:
DOCKER_OPTS = DOCKER_OPTS="--cluster-store=consul://192.168.56.101:8500 --cluster-advertise=<VM-IP>:0 -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock"
【问题讨论】:
-
你创建什么样的网络?新的 VitualBox 虚拟网络还是 docker 网络?
-
一个新的 docker 网络通过“docker -H 0.0.0.0:3376 network create --subnet=172.11.0.0/16 testnetwork”连接到所有节点。如果我通过 ssh 连接到这些节点,则只能 ping 在同一虚拟机上运行的节点
-
尝试提供覆盖驱动程序而不是默认网桥。然后它应该工作
-
仍然得到同样的错误。我认为网络已正确创建,在每个带有“docker network ls”的节点上,我都可以看到以覆盖作为驱动程序的网络
-
在创建 docker 网络之前,您可以从主机 ping 到另一个主机,而在创建之后不是吗?这很奇怪,因为 docker network 应该只影响容器而不影响主机。
标签: docker docker-swarm