理解网络Docker0
测试
三个网络
问题:,docker是如何处理容器网络访问的
测试
1、运行一个tomcat容器
docker run -d -P --name tomcat01 tomcat
2、查看容器内部网络地址 ip addr
3、执行tomcat容器
启动并查看容器ip
docker exec -it tomcat01 ip addr
#发现容器启动的时候会得到一个eth0@if262 ip地址,docker分配的
4、在linux 服务器,也就是docker 的宿主机ping docker 的ip
tomcat01容器ip:172.18.0.2
dockerip:172.18.0.1
ping docker-ip
结果是可以ping通。计算机网络知识(同一网段肯定是可以互通的)
原理:
1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth pair技术
2、再启动一个容器测试,发现又多了一对网卡
再启动一个tomcat容器`
docker run -d -P --name tomact02 tomcat
#然后再查看ip
ip addr
- 我们发现这个容器带来的网卡,都是一对一对的。
- evth-pair就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连
- 正因为有这个特性,evth-pair充当一个桥梁的作用,连接各种虚拟网络设备
- docker 容器之间的连接用的就是evth-pair技术
3、测试一下启动的两个容器tomcat01和tomcat02是否可以ping通
结论:容器和容器之间是可以ping通的
网络模型图
结论:tomcat01和tomcat02是公用的一个路由器,docker0.
所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用ip
小结
Docker使用的是Linux的桥接
Docker中的多有的网络接口都是虚拟的,虚拟的转发效率高;
只要容器删除,对应的网桥也就删除了