Docker0网络详解

it2024-12-24  7

目录

Docker 网络

理解Docker0

原理:


Docker 网络

理解Docker0

Docker启动的时候会在主机上自动创建一个docker0网桥,实际上是一个Linux网桥,所有容器的启动如果在docker run的时候没有指定网络模式的情况下都会挂载到docker0网桥上。这样容器就可以和主机甚至是其他容器之间通讯了。

我们可以用 ip addr查看一下宿主机的 ip 信息

 以上可以看出三个网络

思考:docker是如何处理容器网络访问的?

先运行一个 tomcat 镜像,查看容器内部网络地址,发现容器启动的时候,会得到一个 eth0@if261 ip地址,docker自动分配!

[root@web ~]# docker run -d -P --name tomcat01 tomcat [root@web ~]# docker exec -it tomcat01 ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 260: eth0@if261: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever

 思考:本地能否ping通容器内部

由上图可以看出是可以ping通容器内部

原理:

1.我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要按照了docker,就会有一个网卡docker0桥接模式,使用的技术是veth-pair技术; 

① 启动一个容器,再次查看发现多了一块网卡! 

②再启动一个容器,发现又多了一块网卡!

查看容器中的网卡

由上图可以看出:

我们发现这个容器得到的网卡,都是一对一对的veth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连正因为有这个特性,veth-pair 充当一个桥梁,连接各种虚拟网络设备的OpenStack,Docker容器之间的连接,OVS的连接,都是使用 veth-pair 技术

 2.测试tomcat01和tomcat02之间是否可以ping通

由上可以看出,容器与容器之间是可以ping通 

结论:tomcat01和tomcat02是公用的一个路由器,docker0

所有容器不指定网路的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP 

Docker使用的是Linux的桥接,宿主机中是一个Dokcer容器的网桥docker0。Docker中的所有的网络接口都是虚拟的,虚拟的转发效率高。(比如内网传递文件)只要容器删除,对应网桥一对就没了。 

参考:文章

 

最新回复(0)