无法通过macvlannetworking从主机访问docker容器

在我的Linuxnetworking中,我无法通过专用的macvlannetworking从运行它的主机到达我的docker容器。 从这个macvlannetworking的所有其他连接都很好。

所以基本上这个设置是:

DOCKER1 eth0 172.0.0.1 (default) | eth1 10.0.0.1 (macvlan) CONTAINER1 10.0.0.11 (macvlan) DOCKER2 eth0 172.0.0.2 (default) | eth1 10.0.0.2 (macvlan) CONTAINER2 10.0.0.12 (macvlan) 
  • 主机DOCKER1无法到达CONTAINER1
  • 主机DOCKER2无法到达CONTAINER2
  • 主机DOCKER1可以到达DOCKER2
  • 主机DOCKER1可以到达CONTAINER2
  • 主机DOCKER2可以到达DOCKER1
  • 主机DOCKER2可以到达CONTAINER1
  • 所有的容器可以到达对方
  • 物理networking中的所有其他设备可以覆盖全部
  • 所有可以到达网关/互联网

如何让主机通过macvlannetworking到达自己的容器?

我需要特定的应用程序通过这个networking进行交互,所以使用docker exec将无法解决我的问题;)。

如果没有外部交换机的支持,主机将无法与本地的macvlan设备进行通信。 请参阅例如讨论在虚拟机上使用macvlan设备的红帽文档 :

但是,如果来宾虚拟机configuration为使用type ='direct'networking接口(如macvtap),尽pipe能够与networking上的其他来宾和其他外部主机进行通信,则guest虚拟机无法与自己的主机通信。

这种情况其实不是一个错误 – 它是macvtap的定义行为。 由于主机物理以太网连接到macvtap网桥的方式,从被转发到物理接口的guest虚拟机进入该网桥的stream量不能被弹回到主机的IP协议栈。 另外,发送到物理接口的来自主机IP栈的stream量不能被反弹回macvtap桥,以转发给客户端。