从0到1写docker之五容器网络
Contents
(五)容器网络
(容器网络理解不深,待我计网大成之日,再重新写这篇容器网络的博客)
linux网络虚拟网络设备
- veth:成对出现的虚拟网络设备,发送到veth一端的请求会从另一端发出,实现点对点的连接
|
|
- bridge:用来桥接的网络设备,相当于现实世界的交换机,可以连接不同的网络设备,请求到达bridge设备时,可以通过报文中Mac地址进行广播或群发。
|
|
linux路由表
如果两个namespace处于不同的两个子网中,那么就不能通过bredge进行连接了,需用路由器三层转发,但是linux并未提供虚拟路由器设备,linux本身就具有路由器功能,
linux iptables
iptables用来管理包的流动和转送,用于容器和宿主机外部的网络通信
- MASQUERADE:将namespace中的源地址转换为宿主机中的地址,就可以访问宿主机外的网络了
- DNAT:将宿主机上端口的tcp请求转发到namespace中的地址,实现外部的应用调用
另外的两个组件:
- 网络驱动:网络的管理
- IPAM:分配ip
具体实现请看我的项目代码…
参考文档
《自己动手写docker》
https://www.zhaohuabing.com/post/2020-03-12-linux-network-virtualization/