• 首页
  • 粮食
  • 蔬菜
  • 果品
  • 水产
  • 酒水
  • 饮料
  • 茶叶
  • 畜禽
  • 食用油
  • 资讯
logo
  • 首页>
  • 水产 >
  • 正文

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

2023-04-22 10:46:31 来源:腾讯云

【云原生 • 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原理实践

    水产2023-04-22
  • 劳务派遣合同与服务合同的区别_劳务服务与劳务派遣的差别是什么 世界通讯

    水产2023-04-22
  • 中国科学家精确测量!银河系“体重”算出来了|今日热讯

    水产2023-04-22
  • 孔晓 世界热门

    水产2023-04-22
  • 姓名标准电码查询_姓名电码查询|焦点要闻

    水产2023-04-22
  • 中国青铜器铸造的顶峰时期是哪个朝代?a夏b战国c周d商_中国青铜器铸造的顶峰时期是哪个朝代

    水产2023-04-22
  • 全球视点!2023天津方特五一门票当天可以购买吗?

    水产2023-04-22
  • “2023国际小米年”谷雨春播培训宣传活动在张家口举行|要闻

    水产2023-04-22
  • 广州生育可以报销哪些费用?

    水产2023-04-22
  • 当前通讯!赫舍里皇后_赫舍里

    水产2023-04-22
  • 天河区使用总量控制类指标引进人才入户申报流程2023|环球今日报

    水产2023-04-22
  • 必和必拓:2023财年铁矿石、炼焦煤和动力煤产量指导目标均保持不变_播资讯

    水产2023-04-22
  • 要闻:郑州银行(06196.HK):4月21日南向资金增持13万股

    水产2023-04-22
  • “反攻已在进行中”! 天天快资讯

    水产2023-04-22
  • 股票行情快报:海波重科(300517)4月21日主力资金净卖出185.53万元

    水产2023-04-22
  • 宝丰能源拟定增募不超100亿元 2019年上市募81.5亿

    水产2023-04-22
  • 桐昆股份2022年营收619.93亿净利1.3亿 董事长陈士良薪酬556.04万_世界热闻

    水产2023-04-22
  • 环球今亮点!今日正如谚语所说赠人玫瑰手有余香英文_赠人玫瑰手有余香英文

    水产2023-04-22
  • 天天精选!帝尔激光(300776):4月21日北向资金增持11.14万股

    水产2023-04-22
  • 【天天报资讯】冰轮环境(000811):4月21日北向资金减持89.39万股

    水产2023-04-22

果品

  • 吃一颗杨梅等于吃10条虫子? 专家提醒:这些说法对不对?
  • 北京2022年冬奥会、冬残奥会奖牌“同心”正式发布
  • 冬奥故事会丨一图了解冬奥会历届奖牌
  • 同心筑梦向未来——写在北京冬奥会开幕倒计时100天之际
  • 外交部:美国针对亚裔仇恨犯罪数字令人痛心

蔬菜

  • 说好“一梯一户”却成了“两梯两户”,买方能否解除合同?
  • 更高水平开放合作助力中国东盟经贸发展迎新机遇
  • 9被告人犯侵犯著作权罪被判刑罚
  • 玉渊谭天丨中美再通话,“建设性”很重要
  • 环球时报社评:中美经贸需要建设性对话
  • 俄媒:莫斯科扩大新冠感染新疗法试点范围
  • 冰雪之约 中国之邀 | 追赶的勇气
  • 中国第20批赴黎维和建筑工兵分队完成“VA-2”道路排水系统修缮任务
  • 中国常驻联合国代表团举办恢复联合国合法席位50周年图片展
  • 美专家认为三大原因导致美国供应链危机

Copyright   2015-2022 大西洋食品网 版权所有  备案号:沪ICP备2020036824号-2   联系邮箱: 562 66 29@qq.com