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等)鏈接到實際的物理網卡上,從而實現像普通主機同樣的網絡通訊。