本站已运行

攻城狮论坛

作者: spoto
查看: 434|回复: 1

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集
【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课
原创_超融合自动化运维工具cvTools原创_超融合自动化运维工具cvTools
重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器

【SPOTO思博网络】【网工入门基础】运维基础《容器技术Namespace》

[复制链接]
spoto [Lv10 举世无双] 发表于 2021-11-18 16:11:34 | 显示全部楼层 |阅读模式
查看: 434|回复: 1
开通VIP 免金币+免回帖+批量下载+无广告
CCNA资料/视频
技术内容: 基础知识
资料类型: 概念讲解
文件属性: 其他
【SPOTO思博网络】【网工入门基础】运维基础《容器技术Namespace》
Namespace是将内核的全局资源做封装,使得每个namespace都有一份独立的资源,因此不同的进程在各自的namespace内对同一种资源的使用互不干扰。


举个例子,执行sethostname这个系统调用会改变主机名,这个主机名就是全局资源,内核通过UTSNamespace可以将不同的进程分隔在不同的UTSNamespace 中,在某个Namespace修改主机名时,另一个Namespace的主机名保持不变。


目前,Linux内核实现了6种Namespace。与命名空间相关的三个系统调用:


clone创建全新的Namespace,由clone创建的新进程就位于这个新的namespace里。


创建时传入flags参数,可选值有CLONE_NEWIPC,CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID, CLONE_NEWUTS, CLONE_NEWUSER,分别对应上面六种namespace。


unshare为已有进程创建新的namespace,setns把某个进程放在已有的某个namespace里。


6种命名空间

UTSnamespace


UTSnamespace 对主机名和域名进行隔离。为什么要隔离主机名?因为主机名可以代替IP来访问。如果不隔离,同名访问会出冲突。


IPCnamespace


Linux提供很多种进程通信机制,IPCnamespace 针对System V和POSIX消息队列,这些IPC机制会使用标识符来区别不同的消息队列,然后两个进程通过标识符找到对应的消息队列。


IPCnamespace 使得相同的标识符在两个 namespace代表不同的消息队列,因此两个namespace中的进程不能通过IPC 来通信。


PIDnamespace


隔离进程号,不同namespace的进程可以使用相同的进程号。当创建一个PIDnamespace 时,第一个进程的PID是1,即init进程。它负责回收所有孤儿进程的资源,所有发给init进程的信号都会被屏蔽。


Mountnamespace


隔离文件挂载点,每个进程能看到的文件系统都记录在/proc/$$/mounts里。在一个namespace里挂载、卸载的动作不会影响到其他namespace。


Networknamespace


隔离网络资源。每个namespace都有自己的网络设备、IP、路由表、/proc/net目录、端口号等。网络隔离可以保证独立使用网络资源,比如开发两个web应用可以使用80端口。

新创建的Networknamespace 只有loopback一个网络设备,需要手动添加网络设备。


Usernamespace


隔离用户和用户组。它的厉害之处在于,可以让宿主机上的一个普通用户在namespace里成为0 号用户,也就是root用户。


这样普通用户可以在容器内“随心所欲”,但是影响也仅限在容器内。最后,回到Docker上,经过上述讨论,namespace和cgroup的使用很灵活,需要注意的地方也很多。


Docker 通过Libcontainer来做这些脏活累活。用户只需要使用DockerAPI 就可以优雅地创建一个容器。dockerexec 的底层实现就是上面提过的setns 。

进入全国网络工程师交流群 ,请扫描下方二维码↓↓↓
群里有行业大咖、实战分享、技术交流、技术咨询、企业内推等机会
若群满,请添加老杨
微信(spotoa),邀你进群

【SPOTO思博网络】【网工入门基础】运维基础《容器技术Namespace》

【SPOTO思博网络】【网工入门基础】运维基础《容器技术Namespace》



CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

zhaolim [Lv6 略有所成] 发表于 2021-12-25 18:23:05 | 显示全部楼层
谢谢分享! 下了好好学习!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2026-9-23 07:29 , Processed in 0.100673 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn