计算机系统应用教程网站

网站首页 > 技术文章 正文

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

btikc 2024-12-02 15:34:14 技术文章 22 ℃ 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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表