理解Docker0 (网络)
- 删除所有的容器和镜像
- 测试(三个网络)
#lo:127,0,0,1是本地回环地址
#ens33:192.168.233.129是阿里云内网地址
#docker0:172.17.0.1是docker0地址 ,docker0相当于一个路由器 。
- 问题,docker是如何处理容器网络访问的?
即容器之间是如何相互访问的
- 测试运行tomcat容器
- 查看容器内部网络地址,发现容器内部会得到一个eth0@if5的ip地址:docker分配的
- 观察能否根据docker分配的这个地址ping通 (linux可以Ping通的)
原理:
- 我们每次启动一个docker容器,docker就会为这个容器分配一个ip地址 。只要我们安装了一个docker,那么就会存在网卡docker0。
桥接模式:使用的技术是evth-pair技术
再次测试ip addr
- 再启动一个tomcat容器。
#根据以上信息,我们发现容器带来网卡都是一对对的 。
#evth-pair技术:就是一对虚拟设备的接口,他们都是成对出现的,一段连接着协议,一段彼此相连。 例如: 6: eth0@if7 和 7: vethd91c638@if6
#根据这个特性,evth-pair技术充当一个桥梁的作用,连接着各种虚拟网络设备的。
- 基于evth-pair技术,我们看两个容器之间是否能够相互ping通(依然可以ping通)
- 网络模型图,解释容器之间能够ping通的原理——evth-pair技术
结论: 所有的容器在不指定网络的前提下,都是docker路由的,docker0会自动给我们的容器分配一个ip地址
- 小结
docker使用的是linux桥接,宿主机中是docker容器的网桥 docker0.
docker里面的网络设备接口都是虚拟的,虚拟的转发效率高(内网)
只要容器一删除,对应的那对网桥都会被删除。