容器访问外部网络

执行 iptables -t nat -S 查看防火墙规则
容器与外部互通
可以发现docker0会把172.17.0.0网段上所有容器的流量转发到MASQUERADE来处理。而MASQUERADE的处理方式就是进行网络地址转换,即NAT

查看主机路由规则,可以看到默认由eno16777736来进行路由
容器与外部互通
接下来通过tcpdump具体查看转发过程。监控docker0的流量
容器与外部互通
监控eno16777736的流量
容器与外部互通

在红线部分可以看到,每次容器IP 172.17.0.2到61.135.169.125之前,都是先到eno16777736转换成主机IP即192.168.199.106再发送出去,时间上也是这样的次序关系。
容器与外部互通

外部网络访问容器

外部访问容器主要通过docker-proxy进程来进行转化,将映射的主机端口的流量转发到容器
容器与外部互通

容器与外部互通

本文参考 http://blog.csdn.net/cloudman6/article/details/74359616,加上自己动手实践,做一下笔记,如有侵权,请告知,谢谢。

相关文章: