将docker容器直接连接到主机子网

时间:2016-02-24 11:32:53

标签: linux networking docker iptables switching

我在尝试将docker容器直接连接到主机网络时遇到了一些问题。

配置如下 一个主机在子网中有一个接口(eth0),比如10.0.15.0/24。 eth0上的IP为10.0.15.5/24。 我定制了docker0网桥,以使用eth0提供的子网内的子网,即10.0.15.64/26。因此,docker可以使用此/ 26中的IP来提供容器,我希望可以从网络的其余部分直接访问容器。 docker bridge也有一个IP集,即10.0.15.65/26。

创建容器时,会获得IP,例如10.0.15.66/26。现在,我做了一些ping测试:

  • 网络上的任何内容都可以ping 10.0.15.5(主机的eth0)
  • 网络上的任何内容都可以ping 10.0.15.65(docker0主机桥)
  • 主机可以ping 10.0.15.66(容器的IP)
  • 容器可以ping网络上的任何内容
  • 除主持人以外的任何人都可以在10.0.15.66
  • 上对容器执行ping操作

已启用IP转发

[root@HOSTNAME~]# cat /proc/sys/net/ipv4/ip_forward
1

我在这里缺少什么? 连接到docker0网桥的容器应该可以从我认为的网络中访问。

预期行为 容器应该可以从网络上的任何位置ping通,就像docker0网桥等一样。

非常感谢任何想法或帮助!

1 个答案:

答案 0 :(得分:2)

最后弄明白为什么它不适合我们。 我运行docker容器的机器是虚拟机管理程序上的VM。管理程序仅接受来自连接到VM的NIC的一个MAC地址。换句话说,VM中的NIC未设置为混杂模式。

我为解决这个问题所做的只是使用裸机。另一个解决方案是手动将NIC设置为混杂模式,因此它接受所有数据包,而不仅仅是它自己的MAC数据包。