docker容器虚拟化
docker的网络模式
相对Kubernetes,Docker的网络模型要相对简单很多。但也最适合我们来充分理解前面介绍的各类网络虚拟化的基础技术。
Docker 提供的三种开箱即用的网络方案:
桥接模式(默认)
为每个容器创建veth pair,同时主机上有一个Linux bridge,同一个主机上容器二层网络联通bridge,但不解决主机间网络通信,Linux bridge可以设置IP充当路由器角色,所以可以配置做到容器访问主机设备和外部网络。
主机模式
该模式下,Docker 不会为新容器创建独立的网络名称空间,这样容器一切的网络设施,如网卡、网络栈等都直接使用宿主机上的真实设施,容器也就不会拥有自己独立的 IP 地址。此模式下与外界通信无须进行 NAT 转换,没有性能损耗,但缺点也十分明显,没有隔离就无法避免网络资源的冲突,譬如端口号不允许重复。
说白了,这种模式容器直接复用的主机网卡、主机网络,性能损耗最低,但达不到容器隔离的目的。
空模式
Docker 会给新容器创建独立的网络名称空间,但是不会创建任何虚拟的网络设备,此时容器能看到的只有一个回环设备(Loopback Device)而已。提供这种方式是为了方便用户去做自定义的网络配置,如自己增加网络设备、自己管理 IP 地址,等等。
由此,一般可以定制网络模式。有如下几种:
容器模式
多个容器共享一个容器网