linux namespace 与 用户,Linux Namespace(命名空间)简介

Mount Namespace隔离了一组进程所看到的文件系统挂载点的集合,因此,在不同Mount Namespace的进程看到的文件系统层次结构也不同。

UTS Namespace隔离了uname()系统调用返回的两个系统标示符nodename和domainname,在容器的上下文中,UTS Namespace允许每个容器拥有自己的hostname和NIS domain name,这对于初始化和配置脚本是很有用的,这些脚本根据这些名称来定制它们的操作。

IPC Namespace隔离了某些IPC资源(interprocess community,进程间通信),即System V IPC和POSIX消息队列,这些IPC机制的共同特点是,IPC对象由文件系统路径名以外的机制来识别。每个IPC命名空间都有自己的一套System V IPC标识符和自己的POSIX消息队列文件系统。

PID Namespace隔离了进程ID号空间,不同的PID Namespace中的进程可以拥有相同的PID。PID Namespace的好处之一是,容器可以在主机之间迁移,同时容器内的进程保持相同的进程ID。PID命名空间还允许每个容器拥有自己的init(PID 1),它是 "所有进程的祖先",负责管理各种系统初始化任务,并在子进程终止时收割孤儿进程。

从特定的PID Namespace实例来看,一个进程有两个PID:Namespace内的PID和主机系统上命名空间外的PID。PID命名空间可以嵌套:一个进程从它所在的PID Namespace一直到根PID Namespace,每一层的层次结构都有一个PID,一个进程只能看到他自己PID Namespace和嵌套在该PID Namespace下面的Namespace中包含的进程。

Network Namespace提供了网络相关系统资源的隔离,因此,每个Network Namespace都有自己的网络设备、IP地址、IP路由表、/proc/net目录、端口号等。

网络命名空间使得容器从网络的角度来看是很有用的:每个容器可以有自己的(虚拟)网络设备和自己的应用程序,并与每个命名空间的端口号空间绑定;主机系统中合适的路由规则可以将网络数据包引导到与特定容器相关联的网络设备。因此,例如,可以在同一个主机系统上拥有多个容器化的网络服务器,每个服务器都绑定到其(每个容器)网络命名空间的80端口。

User Namespace隔离了用户和组ID号空间,一个进程的用户和组ID在用户命名空间内外可以是不同的,一个进程可以在用户命名空间外拥有一个正常的无权限用户ID,同时在命名空间内拥有一个(root权限)的用户ID。

翻译摘自:Namespaces in operation, part 1: namespaces overview

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值