MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Docker经典面试题:容器是如何访问外网的?

2024-12-04 11:42 huorong 精选文章 9 ℃ 0 评论

docker 容器通常是网桥的模式,容器通过veth网卡对连接到网桥,veth网卡对可以理解成一个管道。一端连接网桥,一端连接到容器里面,这样容器出去的流量就可以进入网桥了。

当进入网桥后毕竟还是主机上,这个容器内部IP如何和外部通信呢?由于外部网络无法识别内部IP,所以需要将内部IP映射成宿主机的IP。还记得之前的文章介绍了SNAT原理嘛。这里Docker也是通过SNAT,将容器IP映射成主机IP。

可以看到容器出去 172.16.1.8 的源IP,在第2步被修改成主机的 10.0.0.1 后,发送到外部网络,然后返回的数据包的目的IP 就是 10.0.0.1 ,经过第4 步,反向SNAT ,将目的IP 10.0.0.1 再改成172.16.1.8,发送到容器里面。

我们可以看到docker的实现,通过iptables 的MASQ(动态SNAT) 实现。

-A POSTROUTING -s 172.16.0.0/16 ! -o docker0 -j MASQUERADE

Tags:docker查看容器详细信息

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言