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

本文介绍了Docker中的网络设备vethpair和网桥docker0的作用,以及如何实现容器间的通信。vethpair用于网络命名空间隔离,docker0则实现了容器间的多对多通信。通过iptables的DNAT和SNAT,实现了外部访问容器及容器访问外部网络的功能。详细阐述了数据包从外部到容器,以及从容器到外部的路径转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值