在docker每次创建一个容器,通过nat桥接,docker都会给他们分配一个网卡,并且网卡都是一对对,实验如下:
先产看运行的容器:
[root@localhost pingxixi]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f954adffafe 2ae23eb477aa "catalina.sh run" 34 minutes ago Up 34 minutes 0.0.0.0:32768->8080/tcp tomcat01
通过docker exec -it tomcat01 ip addr查看容器ip
[root@localhost pingxixi]# 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
12: eth0@if13: <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
这个就是容器里面一对网卡,这个就是通过evth-pair实现的。
evth-pair特性:就是一对的虚拟设备接口,他们都是成队出现的,一段连着协议,一段彼此相连。
正因为有这个特性,evth-pair充当一个桥梁,连接各种虚拟设备的,Openstac,Docker容器之间的连接,ovs的连接,都是使用evth-pair技术。
查看当前主包含的IP地址:
在里面可以看到我们的docke容器里面的地址,docker中有一个默认的路由器