docker的docker0网络
·
docker自带docker0网络(172.17.0.1/16);
docker0是宿主机上的一个虚拟网桥(虚拟交换机或虚拟网关);



veth-pair:创建一对虚拟网卡,像交换机的一根网线一样连接两端,实现网络的通信;
创建容器时,会在容器和宿主机中各创建一个虚拟网卡,连接容器和宿主机
创建两个容器,查看宿主机ip

通过网络命名空间(通过容器pid或/var/run/docker/netns下命名空间文件进入)查看,容器ip

观察发现,容器和宿主机中,是对称出现的,例如:8->7和7->8,它们像管道一样连接起来,可以直接通信;
可以发现宿主机上的虚拟网卡没有ip,其实它们是接在docker0网桥上,容器可以直接和docker0网桥通信;

容器间通信,docker0充当桥梁(交换机,根据MAC地址表直接通信),所有容器(加入docker0网络的容器)连接在它上面,它们之间通信就像是连接在一台交换机上的同网段主机一样;
容器访问外网,则需要nat转换(SNAT,源地址转换),此时docker0是网关(路由器,根据路由表进行转发);
外网访问容器,则需要容器映射端口到宿主机,nat转换到目标容器地址(DNAT,目标地址转换);
更多推荐
所有评论(0)