全球速递!【云原生 • Docker】Docker核心UTS Namespace原理实践
【云原生 • Docker】Docker核心UTS Namespace原理实践
Docker
三大支柱核心技术:Namespace
、Cgroups
和UnionFS
,这节通过一个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
后,宿主机shell
下lsns
列出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 address
,ping
,telnet
,ss
,tcpdump
)的容器内利用宿主机上的命令进行容器内网络连通性的调试等等。❞
4、使用hostname
和ip addr
验证,和Docker容器在相同的UTS Namespace
和Network 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】Docker核心UTS Namespace原理实践
-
上海启动智能工厂建设系列首场活动,汽车行业智能制造专委会成立
-
将科技融入时尚美学,京东携高定设计师打造数码潮品时装秀
-
大盘震荡整理,上升趋势没有改变-世界最新
-
锂电材料价格雪崩,深圳新星业绩“被刺”-天天快讯
-
世界快消息!如何在棒球裤中折边和安装松紧带
-
数知科技被强制执行8646万_世界报资讯
-
券商代销金融产品规模蓄势待发
-
人民财评:金融“及时雨”灌溉春耕田-快播
-
全度妍杀疯了,食物链的顶端果然是“姐姐”
-
东营汽车总站电话号码查询(东营汽车总站电话)
-
长安期货4月20日原油报告:俄油减产但西岸大量出口,携手美国加息预期压制油价|世界实时
-
战力暴增!新版本表情轮盘将增加携带个数 你平常喜欢用哪些表情
-
赛隆药业2022年营收稳中有增 多品种仿制药通过一致性评价-每日热讯
-
最近满城的清香 原来是来自这种植物
-
【环球速看料】中国驻清迈总领事馆:旅居泰国清迈的大熊猫林惠不幸去世
-
润邦股份:公司根据监管部门相关规定以及公司股东的通知披露股东持股变动的相关公告_天天微速讯
-
“网络达人”助力家乡农文旅融合提速-当前热文
-
渭城区气象台发布寒潮蓝色预警【Ⅳ级/一般】 全球最资讯
-
天天播报:陕西省“最美巾帼农家乐(民宿)”“最美农家乐(民宿)女主人”名单公示
-
严打价格欺诈!北京开展旅游市场价格专项执法行动
-
微软公开《我的世界:传奇》等XGP4月下旬入库游戏|天天聚看点
-
雷蒙多正为访华铺路?商务部证实上周美商务部官员到访北京
-
每日短讯:摩根大通预计 苹果公司第二财季生产的iPhone数量将达到5800万部
-
好莱坞编剧投票批准全行业罢工 要求获得更公平报酬-天天速读
-
这道杭州市民爱做的“钱江肉丝”,“钱江”二字是怎么来的?
-
太可惜!杭州21岁大三学生胃癌晚期,失去手术机会……医生:问题很可能出在它上面-当前时讯
-
首趟“深百号”旅游专列正式开行 焦点播报
-
全球即时看!红绿灯压实线怎么处罚(红绿灯下压实线怎么处罚)
-
当前动态:中青旅联科打造:“雪怪阿乐”摘得中国文化艺术政府奖第四届动漫奖
-
郑渊洁告别商标维权:21年只维权成功37个商标 百事通
-
拉萨贡嘎机场第二跑道预计年底投用
-
钻石饰品搭配技巧_怎么搭配钻石-动态
-
武汉生物工程学院专升本 武汉生物工程
-
雄鹿半场轰下81分 创队史季后赛纪录!-环球今日讯