CGROUPS: 限制、記錄、調整程序組使用的實體資源。 比如,使用CGROUPS 可以給某些程序組多配置設定一些CPU 使用周期,同樣 也可以限制某些程序使用的記憶體上限,一旦達到上限,核心就會抱一個 out of Memory 的錯誤。同時,CGROUPS 也具有記錄實體資源使用情況的功能,比如CGROUPS 調用cpuacct 子系統就可以記錄每個程序使用的記憶體數量、cpu 時間等資料。正因為 linux 有了CGROUPS資源管理系統,核心虛拟化才 變成了可能。
NAMESPACES: 資源隔離機制。将程序、程序組、IPC、網絡、記憶體等資源都變得不再是全局性資源,而是将這些資源從核心層面屬于某個特定的Namespace。在不同的Namespace 之間,這些資源是互相透明的、不可見的。比如說,A使用者登入系統後,可以檢視到B使用者的程序PID。 雖說A使用者不能殺死B 使用者的程序,但是A和B 卻是可以互相感覺。但假如A使用者在Namespaces-A中,B使用者在 Namespaces-B 中,雖然A和B仍然共存與同一個linux作業系統中,但是 A 卻無法感覺到 B .在這種情況下, linux 核心不僅将 Namespaces 互相隔離 ,而且将所有資源牢牢固定在各自空間之中。
LXC : LXC就是基于linux核心通過調用CGROUPS 和 Namespaces 來實作 容器輕量級虛拟化的一種技術,與此同時,LXC 也是一組面向 linux 核心容器的 使用者态 API 接口。使用者通過 lxc 提供的資源隔離限制和隔離功能,可以建立一套完并且互相隔離的 虛拟隔離應用運作環境。
LXC : 是Docker 運作的基礎,Docker就是采用 lxc 來建立 容器的工具,而Docker則是lxc 的殺手級應用。