Docker网络模式有哪些?
1. bridge模式
2. host模式
3. null模式
4. overlay模式
5. macvlan模式
6. ipvlan模式
7. network模式
8. user-defined模式
其中,bridge、host、null、overlay和user-defined是最常用的几种网络模式。
-
上一篇
Docker网络模式有哪些?
<p><strong>? host模式</strong></p><p>host 模式 :使用 --net=host 指定</p><p>相当于VMware 中的桥接模式,与宿主机在同一个网络中,但是没有独立IP地址</p><p>Docker 使用了Linux 的Namespace 技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace 隔离网络等。</p><p>一个Network Namespace 提供了一份独立的网络环境,包括网卡,路由,iptable 规则等都与其他Network Namespace 隔离。</p><p>一个Docker 容器一般会分配一个独立的Network Namespace</p><p class="ql-align-justify">但是如果启动容器的时候使用host 模式,那么这个容器将不会获得一个独立的Network Namespace ,而是和宿主机共用一个Network Namespace 。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口.此时容器不再拥有隔离的、独立的网络栈。不拥有所有端口资源</p><p><br></p><p><strong>? container模式</strong></p><p class="ql-align-justify">container模式:使用–net=contatiner:NAME_or_ID 指定</p><p class="ql-align-justify">这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。**新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围等。**可以在一定程度上节省网络资源,容器内部依然不会拥有所有端口。</p><p class="ql-align-justify">同样,两个容器除了网络方面,其他的如文件系统,进程列表等还是隔离的。</p><p class="ql-align-justify">两个容器的进程可以通过lo网卡设备通信</p><p><br></p><p><strong>? none 模式</strong></p><p>none模式:使用 --net=none指定</p><p>使用none 模式,docker 容器有自己的network Namespace ,但是并不为Docker 容器进行任何网络配置。也就是说,这个Docker 容器没有网卡,ip, 路由等信息。</p><p>这种网络模式下,容器只有lo 回环网络,没有其他网卡。</p><p>这种类型没有办法联网,但是封闭的网络能很好的保证容器的安全性</p><p>该容器将完全独立于网络,用户可以根据需要为容器添加网卡。此模式拥有所有端口。(none网络模式配置网络)特殊情况下才会用到,一般不用</p><p><br></p><p class="ql-align-justify"><strong>? bridge 模式</strong></p><p>相当于Vmware中的 nat 模式,容器使用独立network Namespace,并连接到docker0虚拟网卡。通过docker0网桥以及iptables nat表配置与宿主机通信,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。</p><p>当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。</p><p>从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络设备。</p><p>Docker将veth pair 设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中, 以veth*这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过 brctl show 命令查看。</p><p>容器之间通过veth pair进行访问</p><p>使用 docker run -p 时,docker实际是在iptables做了DNAT规则,实现端口转发功能。</p><p>可以使用iptables -t nat -vnL 查看。</p>
-
下一篇
Docker网络模式有哪些?
Docker网络模式有哪些?
相关文章
- 聊一下高并发和高性能的区别和联系?
- 如何在Golang中实现单例模式?
- 请解释下PHP中会话(session)和Cookie(cookie)的作用。
- PHP中如何处理文件上传和下载?
- 请给一个例子解释一下PHP中的闭包函数是什么?
- 如何在Golang中进行并发编程?
- 请列出与PHP相关的缓存机制及其优缺点。
- 请解释什么是defer语句,以及它有什么作用?
- 在PHP中,Magic Method都有哪些,并举例说明它们的作用?
- 请谈谈您对PHP的垃圾回收机制的了解及实践。
- 请提供至少三个通过PHP实现的网站性能优化技巧。
- 请描述在Golang中使用MongoDB时的最佳实践。
- 如何通过PHP来保护您的代码免受SQL注入攻击?
- PHP中常用的设计模式有哪些?
- 请解释一下PHP中的MVC模式是如何工作的?
- 请举例说明PHP中如何处理异常?
- PHP7和PHP5的性能上有什么差别?
- 请问PHP中如何实现多线程?
- PHP中如何进行单元测试以及如何在开发过程中保证代码质量?
- 请解释HTTP的基本概念,以及在Golang中如何使用HTTP?
微信收款码
支付宝收款码