雲端與容器基礎
在實現 Linux 容器技術的核心功能中,命名空間(namespaces)與 cgroups(控制群組)的角色組合,下列何者正確?
- A命名空間:區隔行程看得到的東西(行程ID、網路、掛載等),cgroups:限制並計量CPU與記憶體等資源的使用量
- B命名空間:限制並計量CPU與記憶體等資源的使用量,cgroups:區隔行程看得到的東西(行程ID、網路、掛載等)
- C命名空間:為每個容器啟動另一個核心以互相隔離,cgroups:為每個容器建立虛擬的CPU並模擬硬體
查看答案與解析
正確答案:A. 命名空間:區隔行程看得到的東西(行程ID、網路、掛載等),cgroups:限制並計量CPU與記憶體等資源的使用量
容器是在主機核心上運作的一般行程,再以兩種機制加上隔離。命名空間把行程ID、網路、掛載(檔案系統的樣貌)、主機名稱等依群組區隔,讓容器內的行程只看得到自己的部分。cgroups 限制一群行程可使用的CPU時間與記憶體量,並計量其使用量。兩者都是核心的功能,因此容器既不會啟動另一個核心,也不會模擬硬體。
- A. 正確。命名空間負責「看得到什麼」,cgroups 負責「能用多少」。
- B. 角色顛倒了。限制資源量的是 cgroups,區隔看得到的樣貌的是命名空間。
- C. 執行另一個核心或模擬硬體,是使用超管理器(hypervisor)的虛擬機器的方式。容器共用主機的核心。