docker 依賴於Linux的二個特性:命名空間(namespace)和控制組(cgroups)docker
命名空間(namespace):實現系統資源的隔離,如進程,網絡,文件系統等,實現輕量級的虛擬化服務,也就是容器。網絡
PID (Process ID ) 進程隔離
NET (network)管理網絡接口
IPC (InterProcess Communication) 管理跨進程通訊的訪問
MNT (mount) 管理掛載點
UTS (UNIX Timesharing System ) 隔離內核和版本號spa
控制組:
資源限定 控制內存使用上線
優先級設定 控制哪些資源能夠優先使用內存等
資源計量: 統計進程組使用的系統資源
資源控制: 資源掛起或恢復接口
docker容器的文件系統隔離,使得每一個系統都有本身的root文件系統。
進程隔離,使得每一個每一個容器都運行在本身的環境中,互不干擾。
網絡隔離,容器間的虛擬網絡接口和IP都是分開的。
資源隔離和分組,使用cgroups將CPU和內存之類的獨立分配給每一個docker容器。進程