2016-02-24 135 views
4

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

配置如下 一台主机在子网中有一个接口(eth0),比如10.0.15.0/24。 eth0上的IP为10.0.15.5/24。 我自定义了docker0网桥,以使用eth0提供的子网内的子网,即10.0.15.64/26。所以码头工人可以使用这个/ 26中的IP给容器,我希望容器可以从网络的其他部分直接访问。码头桥也有一个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
容器

IP转发功能已打开

[[email protected]~]# cat /proc/sys/net/ipv4/ip_forward 
1 

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

预期的行为 容器应可侦测从网络上的任何地方,就像docker0桥等

任何想法或帮助将不胜感激!

+0

由于您已经在操作iptables规则,因此我会先尝试在docker demon命令行中添加'--iptables = false',以免它添加任何与您正在尝试执行的操作相冲突的规则。 – Michael

回答

2

终于明白了为什么它不适合我们。 我运行Docker容器的机器是虚拟机管理程序中的虚拟机。管理程序只接受来自连接到VM的NIC的一个MAC地址。换句话说,虚拟机中的网卡没有设置为混杂模式。

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

相关问题