linux内核具备6种不一样的命名空间属性,分别提供了6种系统资源的隔离能力。被隔离的资源能够具有其中的一种或多种命名空间属性。linux
UTS Namespace 提供基于主机名的隔离能力安全
主机名隔离是指每一个独立容器空间中的程序能够有各自不一样的主机名称信息网络
PID Namespace 提供基于进程的隔离能力ide
进程隔离是的容器中的首个进程成为所在命名空间中PID 值为1 的进程spa
IPC Namespace 提供基于system V 进程信道的隔离能力队列
IPC全程 Inter-Process Communication ,是Linux 中的一种标准的进程间通讯方式, 包括共享内存、信号量、消息队列等具体方法。进程
IPC隔离使得只有在同一命名空间下的进程才能相互通讯。这一特性对于消除不一样容器空间中进程的相互影响具备十分重要的做用。内存
MNT Namespace 提供基于磁盘挂在点和文件系统的隔离能力资源
这种隔离的效果与 chroot 系统调用十分类似,但从实际原理来看,MNT Namespace 会为隔离空间建立独立的Mount节点树,而chroot 仅仅是改变了当前上下文的根mount 节点位置,从而影响文件系统查找文件和目录的结果。消息队列
在文件系统隔离的做用下,容器中的进程将没法访问到容器之外的任何文件。在必要状况下,能够经过挂在额外目录的方式和主机共享文件系统。
User Namespace 提供基于系统用户的隔离能力
系统用户隔离是指用一个系统用户在不一样的命名空间中能够拥有不一样的UID和GID ,它们之间存在必定的映射关系。所以,在特定的命名空间中UID值为0的用户,并不必定是整个系统的root管理员用户。这一特性控制了容器用户的权限,有利于保护主机系统的安全。
Net Namespace 提供基于网络栈的隔离能力
网络栈的隔离容许使用者将特定的网卡与特定容器中的进程运行上下文关联起来,使得同一网卡在主机和容器中呈现不一样的名称。
Net Namespace 的一个重要做用,是让每一个容器经过命名空间来隔离和管理本身的网卡配置。所以能够建立一个普通的虚拟网卡,并将它做为特定容器运行环境的默认网卡eth0使用。
这些虚拟网络网卡最终能够经过某些方式(NAT、VxLan、SDN等)链接到实际的物理网卡上,从而实现像普通主机同样的网络通讯。