实时

您的位置:首页>企业 >

【云原生 • Docker】Docker核心UTS Namespace原理实践 世界快播

【云原生 • Docker】Docker核心UTS Namespace原理实践

Docker三大支柱核心技术:NamespaceCgroupsUnionFS,这节通过一个UTS Namespace简单实践小案例,更加直观理解Namespace资源隔离技术。


【资料图】

UTS Namespace主要是用来隔离主机名和域名的隔离,它允许每个 UTS Namespace拥有一个独立的主机名。例如我们的主机名称为 VM-4-14-centos,使用 UTS Namespace可以实现在容器内的主机名称为 container-docker或者其他任意自定义主机名。

UTS Namespace案例实践

在进行UTS Namespace案例实践之前,我们先来了解个关键指令:「unshare,运行一些与父级不共享某些名称空间的程序。」

root@node3:~# unshare --helpUsage: unshare [options]  [...]Run a program with some namespaces unshared from the parent.Options:-h,--help显示帮助文本并退出。-i,-- ipc 取消共享IPC名称空间。-m,-- mount 取消共享安装名称空间。-n,-- net 取消共享网络名称空间。-p,-- pid 取消共享pid名称空间。另请参见--fork和--mount-proc选项。-u,-- uts 取消共享UTS名称空间。-U,--user 取消共享用户名称空间。-f,-将指定程序fork为取消共享的子进程,而不是直接运行它。这在创建新的pid命名空间时很有用。--mount-proc [=mountpoint]在运行程序之前,将proc文件系统挂载到mountpoint (默认为/ proc)。这在创建新的pid名称空间时很有用。这也意味着创建一个新的挂载名称空间,因为/ proc挂载否则会破坏系统上的现有程序。新的proc文件系统显式安装为私有文件(由MS_PRIVATE | MS_REC)。-r,-- map-root-user 仅在当前有效的用户和组ID已映射到新创建的用户名称空间中的超级用户UID和GID之后,才运行该程序。这样即使在没有特权的情况下运行,也可以方便地获得管理新创建的名称空间各个方面所需的功能(例如,在网络名称空间中配置接口或在安装名称空间中安装文件系统)。仅作为一项便利功能,它不支持更复杂的用例,例如映射多个范围的UID和GID。

我们通过一个实例来验证下 UTS Namespace的作用。

1、首先我们使用 unshare命令来创建一个 UTS Namespace

# unshare --uts --fork /bin/bash

创建好 UTS Namespace后,宿主机shelllsns列出namespace信息,会发现最后一条就是我们使用unshare创建了一个uts类型的namespace

2、回到上步uts命名空间shell下,使用 hostname命令设置一下主机名:

[root@VM-4-14-centos ~]# hostnameVM-4-14-centos[root@VM-4-14-centos ~]# hostname -b container-docker[root@VM-4-14-centos ~]# hostnamecontainer-docker

通过上面命令的输出,我们可以看到当前 UTS Namespace内的主机名已经被修改为 container-docker

3、回到宿主机shell下,查看一下主机的 hostname

[root@VM-4-14-centos ~]# hostnameVM-4-14-centos

可以看到主机的名称仍然为 VM-4-14-centos,并没有被修改,这就是使用UTS Namespace技术实现主机名隔离功能。

Docker原理验证

1、使用docker run创建并运行一个Docker容器:

[root@VM-4-14-centos ~]# docker run -d --name test-nginx --hostname docker-nginx nginx0fd5ec42923553ec2600c51ef4f119e4025ebf5adf13561b0e847cd816f332b7[root@VM-4-14-centos ~]# docker exec -it 0fd sh# hostnamedocker-nginx

❝--hostname指定docker容器的hostname,上面指定--hostname docker-nginx,通过docker exec指令进入到docker容器中,使用hostname查看Docker容器的hostname已被正确修改。❞

2、查看刚创建的Docker容器对应的宿主机PID信息:

[root@VM-4-14-centos ~]# docker inspect -f {{.State.Pid}} test-nginx29424

或者通过lsns指令也可以查看到我们刚才创建的Docker容器Namespace信息:

3、在宿主机shell下使用nsenter指令可以进入到Docker容器相同的Namespace下:

[root@VM-4-14-centos ~]# nsenter -t 29424 -u -n

说明:

-t:指定被进入命名空间的目标进程的pid,即指定Docker容器在宿主机上对应pid;-u:进入uts命令空间;-n:进入net命令空间。

「nsenter:一个可以在指定进程的命令空间下运行指定程序的命令。」有很多image内部是没有bash的,所以我们docker exec是无法进入容器的,此时如果还想看一下容器内的情况,其实只需要想办法加入到容器对应的namespace就可以了。我们使用nsenter工具即可实现,该工具启动后会将自己加入到指定的namespace中,然后exec执行我们指定的程序(通常就是bash)。这个命令大家在容器网络调试下可能常用,比如在一些没有网络调试工具(ip addresspingtelnetsstcpdump)的容器内利用宿主机上的命令进行容器内网络连通性的调试等等。❞

4、使用hostnameip addr验证,和Docker容器在相同的UTS NamespaceNetwork Namespace下:

[root@docker-nginx ~]# hostnamedocker-nginx[root@docker-nginx ~]# ip addr1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever40: eth0@if41:  mtu 1500 qdisc noqueue state UP group default     link/ether 02:42:ac:11:00:07 brd ff:ff:ff:ff:ff:ff link-netnsid 0    inet 172.17.0.7/16 brd 172.17.255.255 scope global eth0       valid_lft forever preferred_lft forever

关键词:

推荐阅读
Docker三大支柱核心技术:Namespace、Cgroups和UnionFS,这节通过一个UTSNamespace简单实践小案例,更加直观理解Namesp

2023-04-22 10:29:11

4月21日电,中粮糖业发布2022年年度报告,实现营业收入264 39亿元,同比增长5 08%;归属于上市公司股东的净利

2023-04-22 09:55:49

梦网科技消息,4月20日,景德镇市城投集团与梦网科技就“景德镇国家陶瓷版权交易中心”项目签约。此次签约旨在加速推进景德镇国家陶瓷版权交易

2023-04-22 09:50:36

4月20日,由中铁五局集团有限公司成渝中线重庆段站前3标项目经理部承建的玄天湖双线大桥钢栈桥顺利贯通,为下一步玄天湖双线

2023-04-22 09:35:33

陕西省气象台发布暴雪蓝色预警:榆林北部局地、西部局地、延安西部局地已出现大到暴雪,预计4月21日20时至22日20时,陕北北部、关中北部、秦岭

2023-04-22 09:01:00

4月21日,苏州科达(603660)融资买入950 12万元,融资偿还1579 88万元,融资净卖出629 76万元,融资余额1 74亿元。

2023-04-22 08:55:39

1、丰田旗下的mpv车型有逸致,埃尔法,威尔法,塞纳,普瑞维亚等。塞纳是一款中大型mpv,这款车的长宽高分别是5085毫

2023-04-22 08:24:50

4月20日晚,科大讯飞(002230 SZ)发布2022年报及2023年一季报,2022年科大讯飞实现营业收入188 2

2023-04-22 08:23:50

一、好处:1、补充营养:梨子中的营养物质较为丰富,含有一定的糖分、维生素、膳食纤维。适当吃梨子可以补充一定的营养,也能补充一定的热量;

2023-04-22 07:51:04

乌克兰即将发起对俄反攻,然而欧盟在这关键时刻未能兑现为乌克兰采购军火承诺,乌克兰外长库列巴对此感到失望。据美国《政客》新

2023-04-22 07:36:21

挖贝网4月21日,香雪制药(300147)近日发布2022年年度报告,报告期内公司实现营业收入2,187,069,901

2023-04-22 07:20:21

地方风味探索“出圈”新路径,沙洋农特产品走进江城邀市民品鉴---刘备最爱的“风干鸡”、“中国油菜杂交之父”傅廷栋院士的倾心之作“高油酸菜

2023-04-22 06:46:00

银行卡单日限额到了第二天凌晨0点就能继续使用。银行卡限额就是指银行对用户的每笔交易在付款时候的最大额度限定以及每日、每月的最大开支额度

2023-04-22 06:26:03

1、绝交,是汉语词汇。2、拼音是juéjiāo。3、词汇出自:《论衡·定贤》解释:意思是比喻因某种原因而双方或单方断绝交

2023-04-22 06:04:55

大皖新闻讯3月底辞去九江市市长职务,4月初转任江西省科学院院长的杨文斌,结果履新不到20天就官宣被查。4月21日下午

2023-04-22 05:18:16

4月21日,广州市建设工程消防协会举行协会网站开通仪式。

2023-04-22 05:10:05

大米喜欢生虫,很多人就会将大米拿出来晒,这样可以减少生虫的现象。大米被晒过之后口感不太好,如何补救呢?下面介绍一下晒过的大米

2023-04-22 04:49:30

中粮糖业(行情600737,诊股)4月21日晚间披露年报,2022年实现营业收入264 39亿元,同比增长5 08%;净利润7 44亿元,同比增长43 14%;

2023-04-22 04:33:39

1、教学目标  1 自主学会本课生字,并能正确熟练地书写。2、  2 正确、流利、有感情地朗读课文,能联系上下文理解

2023-04-22 04:08:05

一些由华尔街金融大鳄或明星交易员领导的最大规模新晋对冲基金正在筹集更多的资金,可能达到新冠疫情爆发前以来从未见过的水平,因此,未来几

2023-04-22 03:27:41