理解Docker0 (网络)

  1. 删除所有的容器和镜像

image.png
image.png

  1. 测试(三个网络)

image.png
#lo:127,0,0,1是本地回环地址
#ens33:192.168.233.129是阿里云内网地址
#docker0:172.17.0.1是docker0地址 ,docker0相当于一个路由器 。

  1. 问题,docker是如何处理容器网络访问的?

即容器之间是如何相互访问的
image.png

  1. 测试运行tomcat容器

image.png

  1. 查看容器内部网络地址,发现容器内部会得到一个eth0@if5的ip地址:docker分配的

image.png

  1. 观察能否根据docker分配的这个地址ping通 (linux可以Ping通的)

image.png
原理:

  1. 我们每次启动一个docker容器,docker就会为这个容器分配一个ip地址 。只要我们安装了一个docker,那么就会存在网卡docker0。
  2. 桥接模式:使用的技术是evth-pair技术

  3. 再次测试ip addr

image.png

  1. 再启动一个tomcat容器。

image.png
image.png

#根据以上信息,我们发现容器带来网卡都是一对对的 。
#evth-pair技术:就是一对虚拟设备的接口,他们都是成对出现的,一段连接着协议,一段彼此相连。 例如: 6: eth0@if7 和 7: vethd91c638@if6
#根据这个特性,evth-pair技术充当一个桥梁的作用,连接着各种虚拟网络设备的。

  1. 基于evth-pair技术,我们看两个容器之间是否能够相互ping通(依然可以ping通)

image.png

  1. 网络模型图,解释容器之间能够ping通的原理——evth-pair技术

image.png
结论: 所有的容器在不指定网络的前提下,都是docker路由的,docker0会自动给我们的容器分配一个ip地址

  1. 小结

docker使用的是linux桥接,宿主机中是docker容器的网桥 docker0.
docker里面的网络设备接口都是虚拟的,虚拟的转发效率高(内网)
只要容器一删除,对应的那对网桥都会被删除。
image.png