docker常见的几种网络模式
bridge模式:
Docker中默认的网络驱动模型,在启动容器时如果不指定则默认为此驱动类型;
host模式:
打破Docker容器与宿主机之间的网络隔离,直接使用宿主机的网络环境,该模型仅适用于Docker17.6及以上版本;
overlay模式:
可以连接多个docker守护进程或者满足集群服务之间的通信;适用于不同宿主机上的docker容器之间的通信;
none模式:
即禁用了网络驱动,需要自己手动自定义网络驱动配置;
plugins模式:
使用第三方网络驱动插件;
各种模式的特点及应用场景
bridge模式
简单来说:就是穿马甲,打着宿主机的旗号,做自己的事情。Docker的默认模式,它会在docker容器启动时候,自动配置好自己的网络信息,同一宿主机的所有容器都在一个网络下,彼此间可以通信。类似于我们vmware虚拟机的nat模式。利用宿主机的网卡进行通信,因为涉及到网络转换,所以会造成资源消耗,网络效率会低。
host模式
简单来说,就是*占鹊巢,用着宿主机的东西,干自己的事情。容器使用宿主机的ip地址进行通信。
特点:容器和宿主机共享网络
container模式
新创建的容器间使用已创建的容器网络,类似一个局域网
特点:容器和容器间共享网络
none模式
这种模式最纯粹,不会帮你做任何网络的配置,可以最大限度的定制化。
Docker网络基本原理
直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包;此外,如果不同子网之间要进行通信,需要额外的路由机制。
Docker中的网络接口默认都是虚拟的接口。虚拟接口的最大优势就是转发效率极高。这是因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将被直接复制到接收接口的接收缓存中,而无需通过外部物理网络设备进行交换。对于本地系统和容器内系统来