将Docker容器连接到家庭网络

时间:2019-10-14 09:09:12

标签: docker routing containers macvlan

我正在Windows 10的Virtual Box上运行的“ Ubuntu Docker主机”上运行一些frr(自由范围路由)和ceos(Arista)容器。

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

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

我知道我们可以使用连接到默认docker0网络的网桥网络,然后如果发布端口等,它将从容器NAT出站连接并接受传入的连接。但是我想要的是拥有一个带有2个接口的容器,其中一个接口位于docker0桥接器中,另一个接口使用来自家庭网络的IP地址连接到家庭网络,这将使该接口完全像物理计算机或我的主机托管Ubuntu VM一样暴露于外部。

1 个答案:

答案 0 :(得分:1)

我认为我找到了一种使这项工作成功的方法。

  1. 添加了新的桥接网络
  2. 添加了一个iptables规则,该规则允许在“转发链”上发往该新桥接网络的流量。

我现在不了解的是,尽管主机上的路由已禁用,但是此“转发”规则会对流量产生影响,并且它实际上正在工作。我也不需要为返回流量添加规则流量。 Docker在创建容器期间添加的默认规则似乎可以解决这个问题。