跨机器时,我无法在覆盖网络中连接其他容器

时间:2019-09-27 09:50:13

标签: docker

我在Windows10上创建了3个VM CentOS-7。他们都安装了Docker并关闭了防火墙。

但是我无法通过 overlay 网络连接另一台计算机的容器。 我做错了吗?

这是我的设定:

192.168.153.131

  • 安装领事
  • 出口8500端口
  • 在领事中,我可以看到接下来的2个节点:192.168.153.132和192.168.153.133。

192.168.153.132

  • 设置--cluster-store=consul://192.168.153.131:8500/network
    • ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock --cluster-advertise=ens33:2375 --cluster-store=consul://192.168.153.131:8500/network
  • 成功创建覆盖网络
    • docker network create -d overlay alice
  • 在网络 alice --network alice)中运行3个nginx容器,它们的IP地址为10.0.0.210.0.0.310.0.0.4

192.168.153.133

  • 设置--cluster-store=consul://192.168.153.131:8500/network
  • 可以成功找到网络 alice
  • 在网络 alice (IP:10.0.0.5
  • 中运行1个nginx容器
  • 在网络 alice (IP:10.0.0.6)中运行1个Debian容器
    • 在此容器中,我可以收到来自10.0.0.5的回复,但无法收到来自10.0.0.3的回复
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
From 10.0.0.5 icmp_seq=1 Destination Host Unreachable
...

请你帮我一下。非常感谢你!

1 个答案:

答案 0 :(得分:0)

我终于发现,要使用覆盖网络,我还必须执行以下操作:

  • 为每台计算机hostname ser2设置唯一的主机名
  • net.ipv4.ip_forward = 1中设置/etc/sysctl.conf
  • 设置网络ifconfig ens33 promisc
  • 在创建覆盖网络时添加参数--attachable,例如docker network create -d overlay --attachable alice

然后覆盖网络可以工作。很好。