命名空间为docker实现了哪几种隔离?(Docker swarm中的LB和服务发现详解)

2026-02-13 06:30:02 :0

命名空间为docker实现了哪几种隔离?(Docker swarm中的LB和服务发现详解)

“命名空间为docker实现了哪几种隔离?”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看命名空间为docker实现了哪几种隔离?(Docker swarm中的LB和服务发现详解)!

本文目录

Docker swarm中的LB和服务发现详解

Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络。VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更强的扩展性和灵活性。linux下是使用了net namespace来隔离docker创建的overlay网络。

Docker 网络模型如下:

一个Sandbox包含了一个容器网络栈的配置。其中包括了对容器的网卡,路由表以及对DNS设置的管理。通常,一个Sandbox的实现可以是一个Linux Network Namespace,一个FreeBSD Jail或者其他类似的东西。一个Sandbox可以包含多个处于不同Network的Endpoint。

Endpoint将一个Sandbox加入一个Network。Endpoint的实现可以是一个veth对,一个Open vSwitch internal port或者其他类似的东西。一个Endpoint只能属于一个Network和一个Sandbox。

Network是一个能够互相通信的Endpoint的集合。Network的实现可以是一个Linux网桥,一个VLAN等等。

上图展示了task1.client请求两个不同资源dns返回的不同结果

环境:
swarm-a(manager node):10.10.8.92

swarm-b(work node):10.10.8.93

swarm-c(work node):10.10.8.94

在docker swarm集群创建的开始,docker 会给每台host创建除了docker0以外的两个网络,分是bridge类型(docker_gwbridge网桥)和overlay类型(ingress)的网络,以及一个过度的命名空间ingress_sbox,我们可以使用如下命令自建overlay网络,结果如下:

docker network create --driver overlay mynet (后续会有用到)

注意1:要是想看到容器创建的两个Net Namespace需要执行
ln -s /var/run/docker/netns /var/run/netns

1)、部署一个service使用默认的ingress网络:

***隐藏网址***

2)、Ingress Load Balancing实现方式:

这样一来即使容器的副本没有落到host上我们仍可以通过这种转发方式来访问到服务。这应该就是routing mesh吧!

1)、部署一个service使用我们自己创建的mynet网络:

***隐藏网址***
部署的两个容器分别处在a和c节点上:

结合例子如下:

2)、查看web_mynet.1容器和mynet网络命名空间的网卡情况:

3)、查看web_mynet.1容器和ingress\ingress_sbox网络命名空间的网卡对应情况:

可以看mynet网络下vlan-id 为4097,ingress网络空间同样操作可以得到vlan-id为4096

swarm-c节点上的情况也是差不多就不操作了,好了我们来画下网络连接的大致图:

可以看到这里ingress_sbox和创建容器的ns共用一个ingress网络空间。

4)、 Internal Load Balancing实现方式:

有两种实现方式dns rr和vip形式,在dns rr 的情况下可能会存在一定是的问题,当容器重启后dns的解析会存在一定时间的延迟。vip则是由vip+内核ipvs来实现。docker swarm默认使用的是vip,这里就以vip的形式来解析。(想要了解dns rr的可以看文章后面的参考链接都是大牛写的)

VIP形式下的流量路径:

操作流程如下:
通过busybox服务做dns解析,可以发现该服务后端挂载的容器和该服务对应的
VIP地址。web_mynet服务对应的VIP为10.0.0.6。

在Internal Load Balancing也就是文中我们自建的mynet overlay网络中,我们会看到创
建的service会同时应用到两个网络环境里面去,为何要这样呢?

原因是swarm自带ingress不具备有服务发现的功能,而容器的生命周期又是不固定的,
service每次的消亡和启用都会改变容器内部的ip地址以及vip地址,那么集群中服务之间
的通信势必会造成问题,这里有人会说,要使多个service之间能够互相通信可以将所有
的service都publish出去,然后通过routing mesh 访问,这样是没错也能行得通,但是存
在一个缺点,那就是不安全,我们仅仅只需要的是将最终提供服务的端口publish即可。
那么不publish所有的service需要做到以下几点:

这里我理解的是ingress是单单提供LB实现routing mesh而mynet是服务发现和LB的结合

所以上文中Internal Load Balancing中的数据流应该分成两种情景如下:

1、当一个外部请求到主机端口8080之后, 数据包的流向如下所示:
主机端口8080 =》 Ingress-sbox-VIP:8080 =》 容器Ingress-sbox =》 IPVS分发到containers。

2、处于 同mynet网络的service内部通信时:
处于 同mynet网络的test service(busybox容器)发起访问web_mynet域名的请求=》请求转发到docker engine内置的DNS解析web_mynet的vip=》web_mynet(容器)在其ns中将
VIP数据包打上标签,并通过ipvs来负载到后端对应的容器=》数据包通过vip地址路由到
mynet的ns,由mynet中的fdb来做转发走tunnel出去。

***隐藏网址***

***隐藏网址***

***隐藏网址***

***隐藏网址***

docker容器网络

利用Net Namespace可以为Docker容器创建隔离的网络环境,容器具有完全独立的网络栈,与宿主机隔离。也可以使Docker容器共享主机或者其他容器的网络命名空间,基本可以满足开发者在各种场景下的需要。
Docker支持 4种网络模式 :
1)host模式,--net=host指定,不支持多主机。

2)container模式,--net = container : name_or_id指定,不支持多主机。

3)none模式,--net=none指定,不支持多主机。

4)bridge模式,--net=bridge指定,默认设置,不支持多主机。

启动容器的时候使用Host模式,那么该容器与宿主机共用一个Network Namespace,因此容器将不会虚拟自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。

采用Host模式的容器,可以直接使用宿主机的IP地址与外界进行通信,无需额外进行NAT转换。由于容器通信时,不再需要通过Linux Bridge等方式转发或者数据包的拆封,性能上有很大优势。当然, Host模式有利也有弊 ,主要包括以下缺点:

1)容器没有隔离、独立的网络栈。容器因与宿主机共用网络栈而争抢网络资源,并且容器崩溃也可能导致宿主机崩溃,这在生产环境中是不允许发生的。

2)容器不再拥有所有的端口资源,因为一些端口已经被宿主机服务、Bridge模式的容器端口绑定等其他服务占用了。

需要补充说明的是,Host模式下的容器仅仅是网络命名空间与主机相同,但容器的文件系统、进程列表等还是和与宿主机隔离的。
Container模式是一种特殊的网络模式。该模式下的容器使用其他容器的网络命名空间,网络隔离性会处于Bridge模式与Host模式之间。当容器与其他容器共享网络命名空间时,这两个容器间不存在网络隔离,但它们与宿主机及其他容器又存在网络隔离。

在Kubernetes体系架构下引入Pod概念,Kubernetes为Pod创建一个基础设施容器, 同一Pod下的其他容器都以Container模式 共享这个基础设施容器的网络命名空间,相互之间以localhost访问,构成一个统一的整体。
与前两种不同,None模式的Docker容器拥有自己的Network Namespace,但并不为Docker容器进行网络配置。该Docker容器没有网卡、IP、路由等信息。需要用户为Docker容器添加网卡、配置IP等。

Bridge模式是Docker默认的网络模式,也是开发者最常使用的网络模式。在这种模式下,Docker为容器创建独立的网络栈,保证容器内的进程使用独立的网络环境,实现容器之间、容器与宿主机之间的网络栈隔离。同时,通过宿主机上的Docker0网桥,容器可以与宿主机乃至外界进行网络通信。

同一宿主机上,容器之间都是连接在Docker0这个网桥上,Docker0作为虚拟交换机使容器间相互通信 。但是, 由于宿主机的IP地址与容器veth pair的IP地址均不在同一个网段 ,故仅仅依靠 veth pair和NameSpace的技术 并不足以使宿主机以外的网络主动发现容器的存在。Docker采用了 端口绑定的方式(通过iptables的NAT) ,将宿主机上的端口流量转发到容器内的端口上,这样一来,外界就可以与容器中的进程进行通信。 iptables的介绍,请点我点我 。
创建容器,并将宿主机的3306端口绑定到容器的3306端口:docker run -tid --name db -p 3306:3306 mysql

在宿主机上,可以通过“iptables -t nat -L -n”,查到一条DNAT规则:DNAT tcp --0.0.0.0/0 0.0.0.0/0 tcp dpt:3306 to:172.17.0.5:3306

Bridge模式的容器与外界通信时,必定会占用宿主机上的端口,从而与宿主机竞争端口资源,这会造成对宿主机端口管理很复杂。同时,由于容器与外界通信是基于三层上iptables NAT,性能和效率损耗是显而易见的。
NAT将地址空间分段的做法引入了额外的复杂度。比如容器中应用所见的IP并不是对外暴露的IP, 因为网络隔离,容器中的应用实际上只能检测到容器的IP,但是需要对外宣称的则是宿主机的IP,这种信息的不对称将带来诸如破坏自注册机制等问题 。
摘抄自陆平的《基于Kubernetes的容器云平台实战》一书的第10章Kubernetes网络

docker里面namespace作用是什么

在 Docker 中,namespace 是一种 Linux 内核功能,用于隔离系统资源,以便容器可以在相对独立的环境中运行。

Docker 使用了多个 namespace,包括:

  • PID namespace:每个容器都有自己的 PID 命名空间,这意味着每个容器中的进程在该命名空间中具有唯一的进程 ID。

  • Network namespace:每个容器都有自己的网络命名空间,这意味着每个容器都有自己的 IP 地址、网络接口、路由表和 iptables 规则,从而实现容器网络的隔离。

  • Mount namespace:每个容器都有自己的 mount 命名空间,这意味着每个容器可以独立地挂载文件系统,不会影响宿主机或其他容器的文件系统。

  • UTS namespace:每个容器都有自己的 UTS 命名空间,这意味着每个容器可以拥有自己的主机名和域名。

  • IPC namespace:每个容器都有自己的 IPC 命名空间,这意味着每个容器都可以独立地使用进程间通信(IPC)机制,如共享内存和信号量,而不会影响宿主机或其他容器。

  • 通过这些 namespace 的隔离,Docker 可以实现容器之间的资源隔离和安全隔离,防止容器之间的干扰和攻击。

通过这些 namespace 的隔离,Docker 可以实现容器之间的资源隔离和安全隔离,防止容器之间的干扰和攻击。

关于本次命名空间为docker实现了哪几种隔离?和Docker swarm中的LB和服务发现详解的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

命名空间为docker实现了哪几种隔离?(Docker swarm中的LB和服务发现详解)

本文编辑:admin

更多文章:


html网页模板(网页制作设计模板-旅游网页该如何设计模板)

html网页模板(网页制作设计模板-旅游网页该如何设计模板)

大家好,今天小编来为大家解答以下的问题,关于html网页模板,网页制作设计模板-旅游网页该如何设计模板这个很多人还不知道,现在让我们一起来看看吧!本文目录网页制作设计模板-旅游网页该如何设计模板有关婚礼微信邀请函模板(通用8篇)有什么好的H

2025年9月29日 04:45

this love歌词taylor(求Taylor Swift的Love Story的歌词的中文翻译~)

this love歌词taylor(求Taylor Swift的Love Story的歌词的中文翻译~)

今天给各位分享求Taylor Swift的Love Story的歌词的中文翻译~的知识,其中也会对求Taylor Swift的Love Story的歌词的中文翻译~进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目

2025年6月19日 16:30

span标签有内容却不显示(定义一个CSS,但是只有DIV可以显示出来,span等都无法显示)

span标签有内容却不显示(定义一个CSS,但是只有DIV可以显示出来,span等都无法显示)

“span标签有内容却不显示”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看span标签有内容却不显示(定义一个CSS,但是只有DIV可以显示出来,span等都无法显示)!本文目录定义一个CSS,但是只有DIV可以显示出来,

2026年7月29日 21:00

void sort是什么意思(请各位说说void sort里的算法是什么意思)

void sort是什么意思(请各位说说void sort里的算法是什么意思)

这篇文章给大家聊聊关于void sort是什么意思,以及请各位说说void sort里的算法是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录请各位说说void sort里的算法是什么意思void sort在C语言中什

2025年6月20日 00:15

学电脑软件开发哪个学校好(电脑软件开发去什么学校学习比较好)

学电脑软件开发哪个学校好(电脑软件开发去什么学校学习比较好)

本篇文章给大家谈谈学电脑软件开发哪个学校好,以及电脑软件开发去什么学校学习比较好对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录电脑软件开发

2026年8月16日 18:45

语言指令有哪些(c语言指令有哪些啊)

语言指令有哪些(c语言指令有哪些啊)

“语言指令有哪些”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看语言指令有哪些(c语言指令有哪些啊)!本文目录c语言指令有哪些啊计算机语言指令分为几类ST语言编程里面的几个指令是什么意思c语言中预处理命令都有哪些C语言32个

2025年12月5日 16:45

subject都有什么意思(“subject ”是什么意思)

subject都有什么意思(“subject ”是什么意思)

大家好,关于subject都有什么意思很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于“subject ”是什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮

2026年8月15日 06:00

数据库的概念和作用(关于数据库的概念)

数据库的概念和作用(关于数据库的概念)

大家好,数据库的概念和作用相信很多的网友都不是很明白,包括关于数据库的概念也是一样,不过没有关系,接下来就来为大家分享关于数据库的概念和作用和关于数据库的概念的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录关于数

2025年9月9日 10:45

莫奈的网络解释莫奈的网络解释是什么?莫奈的解释莫奈的解释是什么

莫奈的网络解释莫奈的网络解释是什么?莫奈的解释莫奈的解释是什么

这篇文章给大家聊聊关于莫奈,以及莫奈的网络解释莫奈的网络解释是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录莫奈的网络解释莫奈的网络解释是什么莫奈的解释莫奈的解释是什么莫奈风景油画作品经典莫奈油画欣赏莫奈的网络解释莫奈的

2025年7月29日 02:00

网页模板停用不能上报怎么办(请教一下,关于网页模板显示不出来的问题~~)

网页模板停用不能上报怎么办(请教一下,关于网页模板显示不出来的问题~~)

大家好,关于网页模板停用不能上报怎么办很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于请教一下,关于网页模板显示不出来的问题~~的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望

2025年10月22日 22:45

免费阅读小说大全下载(哪些网站可以直接免费TXT下载小说)

免费阅读小说大全下载(哪些网站可以直接免费TXT下载小说)

其实免费阅读小说大全下载的问题并不复杂,但是又很多的朋友都不太了解哪些网站可以直接免费TXT下载小说,因此呢,今天小编就来为大家分享免费阅读小说大全下载的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录哪些网站可以

2026年5月12日 02:45

可视化网站模板(不同模式的网站制作这些知识要知道)

可视化网站模板(不同模式的网站制作这些知识要知道)

大家好,关于可视化网站模板很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于不同模式的网站制作这些知识要知道的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目

2026年3月8日 21:15

dateadd函数的语法参数(在VB6.0中,DateAdd函数中,用“w“,“y“与“d“,我怎么感觉都一样呀,都是天)

dateadd函数的语法参数(在VB6.0中,DateAdd函数中,用“w“,“y“与“d“,我怎么感觉都一样呀,都是天)

“dateadd函数的语法参数”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看dateadd函数的语法参数(在VB6.0中,DateAdd函数中,用“w“,“y“与“d“,我怎么感觉都一样呀,都是天)!本文目录在VB6.0中

2026年2月21日 15:30

springfestival用in oron(the Spring Festival前用in还是on)

springfestival用in oron(the Spring Festival前用in还是on)

其实springfestival用in oron的问题并不复杂,但是又很多的朋友都不太了解the Spring Festival前用in还是on,因此呢,今天小编就来为大家分享springfestival用in oron的一些知识,希望可以

2026年8月28日 02:45

acquaintance歌曲(新年快乐英文歌除了happy new year还有那些)

acquaintance歌曲(新年快乐英文歌除了happy new year还有那些)

大家好,acquaintance歌曲相信很多的网友都不是很明白,包括新年快乐英文歌除了happy new year还有那些也是一样,不过没有关系,接下来就来为大家分享关于acquaintance歌曲和新年快乐英文歌除了happy new y

2026年4月19日 03:15

constantly continuously(constantly怎么读)

constantly continuously(constantly怎么读)

大家好,如果您还对constantly continuously不太了解,没有关系,今天就由本站为大家分享constantly continuously的知识,包括constantly怎么读的问题都会给大家分析到,还望可以解决大家的问题,下

2025年8月8日 18:15

微软windows官网(请问微软的官方网站在哪)

微软windows官网(请问微软的官方网站在哪)

各位老铁们,大家好,今天由我来为大家分享微软windows官网,以及请问微软的官方网站在哪的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录请问微软的

2025年8月4日 08:45

a拼音怎么读(拼音a的发音)

a拼音怎么读(拼音a的发音)

各位老铁们好,相信很多人对a拼音怎么读都不是特别的了解,因此呢,今天就来为大家分享下关于a拼音怎么读以及拼音a的发音的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录拼音a的发音a在汉语拼音中读什么a的拼音是什么怎

2026年5月27日 13:45

官网无需代码构建(国内的无代码开发平台 有推荐吗)

官网无需代码构建(国内的无代码开发平台 有推荐吗)

大家好,官网无需代码构建相信很多的网友都不是很明白,包括国内的无代码开发平台 有推荐吗也是一样,不过没有关系,接下来就来为大家分享关于官网无需代码构建和国内的无代码开发平台 有推荐吗的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2025年12月17日 11:00

asp技术主要用来干嘛(ASP能为我们做什么)

asp技术主要用来干嘛(ASP能为我们做什么)

大家好,关于asp技术主要用来干嘛很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于ASP能为我们做什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录A

2025年6月24日 23:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索