阿良老师 Docker学习_容器网络

veth pair:成对出现的一种虚拟网络设备,数据从一端进,从另一端出。用于解决网络命名空间之间的隔离。(宿主机和容器)

docker0:网桥是一个二层网络设备,通过网桥可以将linx支持的不同的端口连接起来,并实现类似交换机那样的多对多的通信。用于解决容器和容器之间的通信。

注意:无法直接访问容器IP,只能访问宿主机IP。

Docker使用iptables实现网络通信

一.外部访问容器

以nginx为例:

启动一个nginx容器

当浏览器输入192.168.32.130:80(数据包),在宿主机这里数据包的目的地址(192.168.32.130:80)会被iptables利用DNAT(目标网络地址转换)转换成172.17.0.3:80,并查询路由表得到对应的网卡,网卡发送ARP广播,最后找到对应的容器.

ss -antp |grep 80  

 iptables -t nat -vnL DOCKER

 ip route

 

 

二.容器访问外部

根据路由表得到网卡,根据网卡到达宿主机,在宿主机这里会被iptables利用SNAT(源地址转换)转换成宿主机ip,然后转发到默认网关(宿主机网关),借助宿主机的网络访问互联网。

iptables -t nat -vnL POSTROUTING

 

 

 


版权声明:本文为Wqr_18390921824原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。