【云原生 • 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原理实践_世界新视野
Docker三大支柱核心技术:Namespace、Cgroups和UnionFS,这节通过一个UTSNamespace简单实践小案例,更加直观理解Namesp
-
青岛银行:张文础独立非执行董事的任职资格获青岛银保监局核准
青岛银行(03866)发布公告,该行收到《青岛银保监局关于张文础任职资格的批复》(青银保监复[2023]80号),中
-
使用 Spring Cloud Bus 和 Spring Cloud Stream 集成实现基于消息的事件驱动 最新
基于消息的事件驱动是一种常见的微服务架构设计模式,它将不同的微服务之间通过消息进行通信,实现松耦合、
-
Python面向对象编程-自定义异常使用(一)|微头条
上面的示例中,我们定义了一个名为Game的游戏类,用于处理棋盘和游戏规则。我们还定义了一个名为InvalidMov
-
今日关注:甘肃:税银携手将税收普法宣传和办税场景延伸到全省工行网点
4月19日,甘肃省税务局与工行甘肃省分行围绕“税惠千万家共建现代化”主题,共同开启“陇税雷锋优普法税银
-
集友股份(603429):2022年度董事会审计委员会履职报告 天天精选
安徽集友新材料股份有限公司审计委员会履职报告2022年度,公司董事会审计委员会根据《公司章程》、《审计委
-
Steam举行Xbox特卖 《奥日2》《地平线4》史低促销
发行商XboxGameStudio正在Stem商店举行特卖活动,多款游戏打折促销中。《盗贼之海》史低58元>>《帝国时代4
-
考研的条件是什么(考研的条件是什么样的)
条件:考生录取当年9月1日前必须取得国家承认的本科毕业证书,否则录取资格无效;具有国家承认的大学本科毕
-
【主动创稳建设平安陇南】李逢春主持召开全市道路交通安全和运输执法领域突出问题专项整治工作推进会议 全球热讯
【主动创稳建设平安陇南】李逢春主持召开全市道路交通安全和运输执法领域突出问题专项整治工作推进会议
-
2023上海车展:宝马新款X6 M首发亮相-世界速递
2023上海车展上,基于中期改款宝马X6而来的新款宝马X6M也正式首发亮相。新车针对外观和内饰进行了升级,同
-
全球关注:预告|芝罘区迎“五四”青年歌会等您来!
大小新闻客户端4月20日讯(YMG全媒体记者钟嘉琳通讯员战佳颖)记者获悉,烟台正青春芝罘区迎“五四”青年歌
-
世界快资讯:长峰旗下上海曹安医院三楼宿舍及厨房区域被查封:排查中发现消防隐患
长峰医院火灾事故发生后,“长峰系”医院受到关注。上海曹安医院是北京长峰医院股份有限公司全资控股的子公
-
天天微速讯:证券日报:严防生成式AI“深度造假”
App4月19日消息,证券日报文章指出,如今,全球基于AI的创业公司如雨后春笋般涌现,仅在3月份就有近10款AI
-
天天精选!一口鲜滋味儿 | 时令香椿如何保存?
谷雨食椿,如何才能将这口“鲜滋味”长时间保存呢?来听听专家支招。
-
全球视讯!宝马 MINI 中国再就冰淇淋事件致歉:视频里的四五个“老外”为公司员工
MINI中国4月21日在官方微博发布声明,就近期上海车展的 "冰淇淋 "事件致歉。在18、19号两天,该公司通过MIN
-
世界热文:Switch模拟器Ryujinx性能飞跃:游戏帧数提升20倍
快科技4月20日讯,当前比较主流的Switch模拟器主要是YUZU和Ryujinx这两款。日前,Ryujinx经过数月优
-
全球快资讯丨短短25米路面竟有74个井盖续:井盖密密麻麻 脚下隐患重重
在金龙公寓,部分路段存在高低不平的“井盖阵”。记者陈起鸿摄海西晨报报道引发热议,读者讲述类似情况并提
-
凌晨刷爆《灌篮高手》仅是回忆杀吗具体详细内容是什么 今日观点
凌晨刷爆《灌篮高手》仅是回忆杀吗今天的热度非常高,现在也是在热搜榜上了,那么具体的凌晨刷爆《灌篮高手
-
普元信息2022扣非亏损 2019上市募6.4亿民生证券保荐_环球滚动
普元信息2022扣非亏损2019上市募6 4亿民生证券保荐
-
热点聚焦:华泰柏瑞基金副总经理董元星离任
华泰柏瑞基金副总经理董元星离任
-
欠了小米贷款9个月没还会被强制执行吗
需要视情况而定。起诉后,法院判决还款不执行的,那法院就会采取强制执行。行动建议:1)正规网贷一定要还
-
全球关注:长虹美菱股票异动,一季度营收超50亿元
长虹美菱股票异动,一季度营收超50亿元,股票,长虹美菱,上市公司
-
“两岸媒体走进黔西南州采风交流”活动启动
原创黔西南日报中国黔西南收录于合集 康养胜地人文兴义142个4月19日,“两岸媒体走进黔西南州采风交流”活动
-
天天关注:如何提升高中学生的数学核心素养和能力_如何提升高中学生的数学核心素养
1、一、正确认识和理解数学核心素养21世纪,我国确定了“立德树人”“以人为本”的教育改革指导思想,强调
-
夫妻争吵后妻携孩子3楼坠下,夫拍坠亡照发家属群“过来收尸”-热讯
夫妻争吵后妻携孩子3楼坠下,夫拍坠亡照发家属群“过来收尸”,收尸,女儿,坠楼,后妻,夫妻,家属群
-
全球连线|这个联合国中文日,他们讲述中文之缘
新华社马德里4月20日电(记者孟鼎博谢宇智)今年4月20日是第14个联合国中文日,主题为“中文:增进文明交流
-
双离合变速箱dct是干式还是湿式
1、各有各的好,湿式双离合变速箱耐用,动力传递一般;干式双离合变速箱动力传递好,转换速度快。2、一 介
-
门迪利巴唤醒塞维利亚:联赛不败,剑指欧联
在上任后不到一个月的时间,62岁的西班牙老帅门迪利巴(JoséLuisMendilibar)彻底扭转了塞维利亚本赛季
-
世界球精选!过星星峡检查站需要什么手续(过星星峡检查站需要多长时间)
过星星峡检查站要求持48小时核酸证明。如果超过48小时,需检查员开出批准通过的条子,在现场免费做核酸后直
-
全球热资讯!北影节一票难求炒热五一档,但电影市场并不乐观
开票前,网名为“奇爱博士”的中国电影资料馆电影策展人沙丹就在微博上称,在售票平台后台可以看到,“今