MountNamespace隔离了一组进程所见到的文件系统挂载点的集合,为此,在不同MountNamespace的进程听到的文件系统层次结构也不同。
UTSNamespace隔离了uname()系统调用返回的两个系统标识符nodename和domainname,在容器的上下文中linux用户空间初始化,UTSNamespace容许每位容器拥有自己的hostname和NISdomainname,这对于初始化和配置脚本是很有用的,这种脚本按照这种名称来订制它们的操作。
IPCNamespace隔离了个别IPC资源(interprocesscommunity,进程间通讯)64位linux,即SystemVIPC和POSIX消息队列,这种IPC机制的共同特征是,IPC对象由文件系统路径名以外的机制来辨识。每位IPC命名空间都有自己的一套SystemVIPC标示符和自己的POSIX消息队列文件系统。
PIDNamespace隔离了进程ID号空间,不同的PIDNamespace中的进程可以拥有相同的PID。PIDNamespace的用处之一是,容器可以在主机之间迁移,同时容器内的进程保持相同的进程ID。PID命名空间还容许每位容器拥有自己的init(PID1),它是"所有进程的先祖"node.js安装linux,负责管理各类系统初始化任务,并在子进程中止时收割孤儿进程。
从特定的PIDNamespace实例来看,一个进程有两个PID:Namespace内的PID和主机系统上命名空间外的PID。PID命名空间可以嵌套:一个进程从它所在的PIDNamespace仍然到根PIDNamespace,每一层的层次结构都有一个PID,一个进程只能看见他自己PIDNamespace和嵌套在该PIDNamespace下边的Namespace中包含的进程。
NetworkNamespace提供了网路相关系统资源的隔离,因而linux用户空间初始化,每位NetworkNamespace都有自己的网路设备、IP地址、IP路由表、/proc/net目录、端标语等。
网路命名空间致使容器从网路的角度来看是很有用的:每位容器可以有自己的(虚拟)网路设备和自己的应用程序,并与每位命名空间的端标语空间绑定;主机系统中合适的路由规则可以将网路数据包引导到与特定容器相关联的网路设备。为此,比如,可以在同一个主机系统上拥有多个容器化的网路服务器,每位服务器都绑定到其(每位容器)网路命名空间的80端口。
UserNamespace隔离了用户和组ID号空间,一个进程的用户和组ID在用户命名空间内外可以是不同的,一个进程可以在用户命名空间外拥有一个正常的无权限用户ID,同时在命名空间内拥有一个(root权限)的用户ID。
翻译摘自:Namespacesinoperation,part1:namespacesoverview