这里写图片描述
如上图:我启动了两个docker容器,docker1和docker2,这两个容器用的是同一个镜像(nginx镜像),两个分别将nginx的80端口映射到9090和9091端口,启动后可在Windows上正常访问nginx服务。今天写这个主要是记录一下该网络架构中的路由转发情况。
这里写图片描述
从这个图中可以看出,很明显最后两条规则是针对“由外访问docker内部的转发规则”
黄色那两条是“从内往外访问规则”,但是很明显的是,对内部的两个地址伪装了。至于伪装为什么了,可以通过tcpdump来抓包瞅瞅。

以docker1为例,首先进入docker1里,之后,ping网关192.168.245.1,接着分别抓取docker1的veth*和host的eth0的流量包,如下:
这里写图片描述
可以发现,这个地址是被伪装为了192.168.245.222
而两个docker之间的沟通直接通过docker0转发即可,不需要伪装。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐