Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Docker容器连接到家庭网络_Docker_Routing_Containers_Macvlan - Fatal编程技术网

将Docker容器连接到家庭网络

将Docker容器连接到家庭网络,docker,routing,containers,macvlan,Docker,Routing,Containers,Macvlan,我正在运行一些frr(自由范围路由)和ceos(Arista)容器,它们位于“Ubuntu Docker主机”上,该主机在Windows10的虚拟机上运行 我创建了一个macvlan网络(net3),将它绑定到Ubuntu的enp接口,并将我的容器连接到它。但是,我无法使用连接到macvlan网络的容器接口访问容器。 我阅读了有关主机和容器之间网络空间的一些限制,并将macvlan网络类型视为克服这些限制的解决方案。然而,它没有起作用 因为我的容器是一个具有多个接口的路由器,所以我希望我可以将我

我正在运行一些frr(自由范围路由)和ceos(Arista)容器,它们位于“Ubuntu Docker主机”上,该主机在Windows10的虚拟机上运行

我创建了一个macvlan网络(net3),将它绑定到Ubuntu的enp接口,并将我的容器连接到它。但是,我无法使用连接到macvlan网络的容器接口访问容器。 我阅读了有关主机和容器之间网络空间的一些限制,并将macvlan网络类型视为克服这些限制的解决方案。然而,它没有起作用

因为我的容器是一个具有多个接口的路由器,所以我希望我可以将我的新net3网络连接到我的容器。它将作为一个新的接口出现(确实如此),当我将一个IP地址从我的家庭网络分配给这个接口时,我的路由器将能够使用这个接口的IP地址直接与外部通信,并绕过任何类型的防火墙、NAT等


我知道我们可以使用连接到默认docker0网络的网桥网络,然后它将NAT来自容器的传出连接,并在发布端口等时接受传入连接。然而,我想要的是一个具有2个接口的容器,其中一个接口位于docker0网桥中,另一个接口通过来自家庭网络的IP地址连接到家庭网络,这将使它完全暴露在外部,就像物理机器或我的docket主机Ubuntu VM一样。

我想我找到了一种方法来实现这一点

  • 添加了一个新的桥接网络
  • 添加了一个iptables规则,允许在“前向链”处将通信量发送到此新的桥接网络 我现在不明白的是,尽管在主机上禁用了路由,但此“转发”规则对流量有影响,并且它实际上正在工作。我也不需要为返回流量添加规则流量。Docker在创建容器期间添加的默认规则似乎考虑了这个方向