1、closed container 封闭式网络模式
相当于一座孤岛,没有网络协议栈的通信
使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息,只有lo 网络接口。需要我们自己为Docker容器添加网卡、配置IP等。
示例图如下
2、bridged container 桥接式网络模式
各个容器之间网络协议栈单独分离
当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1,掩码为 255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。
当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头(例如 vethAQI2QT)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
如图所示,同一个主机的两个容器之间通过网桥doker0进行通信。(不同之间的主机上的容器通信需要借助overlay网络,涉及到一些底层协议,单独写一篇文章拿出来讲)
3、joined container 联合挂载式网络模式
容器之间可以共享网络协议栈,即可以通过套接字来进行通信
这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。
示例如下图:
4、opentainer container 开放式网络模式
与主机共享网络协议栈
Host模式使用是在容器启动时候指明--network host,此时容器共享宿主机的Network Namespace,容器内启动的端口直接是宿主机的端口,容器不会创建网卡和IP,直接使用宿主机的网卡和IP,但是容器内的其他资源是隔离的,如文件系统、用户和用户组。直接使用宿主机网络。同样启动一个nginx,此时共享主机网络,根据情况来使用,这样子也不用做端口转发,网络传输效率会比较高(思考一下为什么)。
-
接口
+关注
关注
33文章
9443浏览量
156108 -
Linux
+关注
关注
88文章
11627浏览量
217890 -
Docker
+关注
关注
0文章
526浏览量
14006
发布评论请先 登录
一图看懂绿电直连的四种玩法
从入门到精通:基于开源代码的BLE四种模式开发详解
全网最全CSA3412,BCT4340,VL162,MCU/ USB3.1 正反插10G bps四种解决方案
干货分享 | RK3588 Ubuntu系统Docker容器使用指南
RDMA简介3之四种子协议对比
变频器主要支持哪四种模式?有什么区别?
芯片封装中的四种键合方式:技术演进与产业应用
docker配置网络代理
四种常用的最大功率点跟踪MPPT技术介绍
四种常见ADC的特性和应用
MSP430F4250的四种模式分别是在什么情况下使用呢?
私藏技术大公开!四种常见供电方案
被问爆的四种供电方式,来啦~
烙铁焊,回流焊,波峰焊和激光锡焊四种工艺的比较

详解docker的四种网络模式
评论