Docker容器实例通过非默认的网络命名空间访问外部网络

Docker为所有容器实例建立了独立的网络命名空间中,并通过docker0桥接到宿主机的默认网络命名空间。

如果容器实例要通过宿主机上的一个定制网络命名空间oam,而非宿主机的默认网络命名空间,访问外部网络,示意图如下所示。

Docker容器实例通过非默认的网络命名空间访问外部网络

 

对于上述图示,Docker宿主机上的配置比较复杂,大致可以归纳为如下几步。

1.创建并配置虚拟网卡veth0/veth1的IPs;

2.配置默认网络命名空间的routes,将来自docker0的请求都通过veth0转发到veth1;

3.配置默认网络命名空间的IP forwarding和NAT;

4.配置oam网络命名空间的IP forwarding和NAT