Docker三大支柱核心技术:Namespace、Cgroups和UnionFS,这节通过一个UTS Namespace简单实践小案例,更加直观理解Namespace资源隔离技术。
UTS Namespace主要是用来隔离主机名和域名的隔离,它允许每个 UTS Namespace拥有一个独立的主机名。例如我们的主机名称为 VM-4-14-centos,使用 UTS Namespace可以实现在容器内的主机名称为 container-docker或者其他任意自定义主机名。
在进行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技术实现主机名隔离功能。
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三大支柱核心技术:Namespace、Cgroups和UnionFS,这节通过一个UTSNamespace简单实践小案例,更加直观理解Namesp
1、广东省深圳市区号:0755邮编:518000◎广东省深圳市罗湖区区号:0755邮编:5
绵绵春日,在武艳萍的工作室里,琅琅的读书声不绝于耳。前来参加“花伴·悦读”分享会的女性读者围坐一起,...
常喝椰子水有什么好处?这3种人千万别多喝
【险资配置遇压力:资金充沛优质资产难寻】今年一季度保险公司保费收入和新业务价值回暖,负债端增长带...
4月20日,重庆市交通执法总队高速公路第五支队举办了2023年“渝西先锋杯”交通执法实作竞赛。比赛现场(...
观点网讯。4月21日,上交所公司债券项目信息平台显示,山东省商业集团有限公司2023年面向专业投资者非公...
大小新闻客户端17号讯(视频摄制YMG全媒体记者黄钰峰李伟嘉通讯员李成修姜宗延摄影报道)4月17日是“世界血
由于土豆的蛋白质含量低,因此选择蛋白质含量高的三明治很重要。马铃薯汤具有数量惊人的健康益处。土豆...
中证网讯(记者林倩)4月21日,上海期货交易所(简称上期所)发布公告,拟对《上海期货交易所结算细则》(简...
1、确切得说这个是种族+职业特长,MS在10级 20级的时候都会学会一个职业技能,这个职业技能是按种族来的,...
2023厦门杨千嬅演唱会门票最高 贵价格是多少钱?答:2023厦门杨千嬅演唱会最贵的门票价格是1080元的内场...
在首次看到《霓虹序列》的预告片时,这款小品级的肉鸽游戏就靠着色彩艳丽的角色立绘,简洁的UI,以及充...
4月21日,中盐化工(600328)融资买入2215 08万元,融资偿还1427 7万元,融资净买入787 38万元,融资余额5 76亿元。
(观察者网讯)据韩联社报道,当地时间4月20日,韩国联合参谋本部议长金承谦首次公开访问了位于庆尚北道...
每经AI快讯,四方精创(SZ300468,收盘价:11 25元)4月21日晚间发布年度业绩报告称,2022年营业收入约
在房屋不能交付且无实际交付可能的情况下,商品房消费者主张价款返还请求权优先于建设工程价款优先受偿...
中国南方航空公司(以下简称“南航”)4月20日正式开通深圳至泰国曼
格力空调制热一小时多少度电,了解一下很多人还不知道,现在让我们一起来看看吧!解答:1、在制热的情况...
集微网消息,日前台积电公布的业绩证实了半导体行业面临的严峻前景,疲弱的收益也可能使其与美国政府就...