1.网络的名称空间主要是实现网络协议栈和网络设备的隔离
一般一个设备属于一个用户空间。
linux内核支持两种级别设备模拟
二层设备和三层设备
使用brctl来模拟二层设备
使用单独的名称空间来实现路由器。因为linux内核能够模拟路由器
桥接:就是将物理网卡当做交换机来用
nat网络:
同一主机上的容器进行通信
在主机上键一个软虚拟交换机,让两个容器各自使用纯软件的方式建立一对连接,一半在名称空间上,一半在虚拟交换机上,来达到两个容器相互通信
但是也有不同的状况,比如下列
docker网络
docker在安装完以后自动提供了3种网络,默认使用bridge(nat桥接)网络,如果启动容器时,不指定--network=string,就是用的bridge网络,使用docker network ls可以看到这三种网络类型
docker在安装完成后,会自动在本机创建一个软交换机(docker0),可以扮演二层的交换机设备,也可以扮演二层的网卡设备。
当我们在创建容器时,docker会通过软件自动创建2个虚拟的网卡,一端接在容器上,另一端接在docker0交换机上,从而使得容器就好像连接在了交换机上。
bridge0是一个nat桥,因此docker在启动容器后,还会自动为容器生成一个iptables规则