
docker自带docker0网络172.17.0.1/16docker0是宿主机上的一个虚拟网桥虚拟交换机或虚拟网关veth-pair创建一对虚拟网卡像交换机的一根网线一样连接两端实现网络的通信创建容器时会在容器和宿主机中各创建一个虚拟网卡连接容器和宿主机创建两个容器查看宿主机ip通过网络命名空间通过容器pid或/var/run/docker/netns下命名空间文件进入查看容器ip观察发现容器和宿主机中是对称出现的例如8-7和7-8它们像管道一样连接起来可以直接通信可以发现宿主机上的虚拟网卡没有ip其实它们是接在docker0网桥上容器可以直接和docker0网桥通信容器间通信docker0充当桥梁交换机根据MAC地址表直接通信所有容器加入docker0网络的容器连接在它上面它们之间通信就像是连接在一台交换机上的同网段主机一样容器访问外网则需要nat转换SNAT源地址转换此时docker0是网关路由器根据路由表进行转发外网访问容器则需要容器映射端口到宿主机nat转换到目标容器地址DNAT目标地址转换