容器默认使用的时bridge网络
docker安装时会创建一个 命令为docker0的linux bridge。如果不指定--network=,运行的容器会默认挂到docker0上
interface一列就是容器的虚拟网卡,现在由于容器都处于关闭的状态,所以没有网卡信息
开启一个容器,看一下网络的变化
veth48a8eca这个虚拟网卡被挂到了docker0上面
进入容器看一下网卡信息:
可以看到容器中的网卡名字是eth0@if315而在host上面显示的是veth48a8eca,
其实:eth0@if315和veth48a8eca是一对veth pair。veth pair是一种成对出现的特殊网络设备,可以把他想像成由一根虚拟网线连起来的一对网卡,网卡的一头叫做:eth0@if315,另一头是veth48a8eca挂在了docker0上,其效果就是将eth0@if315挂在了docker0上
我们看到eth0@if315配置了172.17.0.2/16的ip,我们再运行一个容器,看看他的ip是否也是同样的
我们发现新运行的容器的IP由172.17.0.3顺延下去了,而不是一个独立的网段,而且都是172.17.0的网段的
为什么都是这个网段上面的呢?
可以通过docker network inspect bridge
看到网卡的配置信息:subnet是172.17.0.0/16,gateway是172.17.0.1,这个网管来自哪呢?
我们可以看到host主机上面的docker0的ip就是172.17.0.1,所以这个网管就是docker0
现在的拓扑图是:(此图是借鉴于他人的)
创建容器时docker会自动从172.17.0.0/16中分配一个IP,这里16为的掩码保证由足够的IP可以给容器使用
---恢复内容结束---