Linux中國

什麼是 CGManager?

CGManager 是一個核心的特權守護進程,通過一個簡單的 D-Bus API 管理你所有的 cgroup。它被設計用來處理嵌套的 LXC 容器以及接受無特權的請求,包括解析用戶名稱空間的 UID/GID。

組件

cgmanager

這個守護進程在宿主機上運行,​​將 cgroupfs 掛載到一個獨立的掛載名稱空間(所以它不能從宿主機上看到),綁定 /sys/fs/cgroup/cgmanager/sock 用於傳入的 D-Bus 查詢,並通常處理宿主機上直接運行的所有客戶端。

cgmanager 既接受使用 D-Bus + SCM 憑證的身份驗證請求,用於在命名空間之間轉換 uid、gid 和 pid,也可以使用簡單的 「unauthenticated」(只是初始的 ucred)D-Bus 來查詢來自宿主機級別的查詢。

cgproxy

你可能會在兩種情況下看到這個守護進程運行。在宿主機上,如果你的內核老於 3.8(沒有 pidns 連接支持)或處於容器中(只有 cgproxy 運行)。

cgproxy 本身並不做任何 cgroup 配置更改,而是如其名稱所示,代理請求給主 cgmanager 進程。

這是必要的,所以一個進程可以直接使用 D-Bus(例如使用 dbus-send)與 /sys/fs/cgroup/cgmanager/sock 進行通信。

之後 cgproxy 將從該查詢中得到 ucred,並對真正的 cgmanager 套接字進行身份驗證的 SCM 查詢,並通過 ucred 結構體傳遞參數,使它們能夠正確地轉換為 cgmanager 可以理解的宿主機命名空間 。

cgm

一個簡單的命令行工具,與 D-Bus 服務通信,並允許你從命令行執行所有常見的 cgroup 操作。

通信協議

如上所述,cgmanager 和 cgproxy 使用 D-Bus。建議外部客戶端(所以不要是 cgproxy)使用標準的 D-Bus API,不要試圖實現 SCM creds 協議,因為它是不必要的,並且容易出錯。

相反,只要簡單假設與 /sys/fs/cgroup/cgmanager/sock 的通信總是正確的。

cgmanager API 僅在獨立的 D-Bus 套接字上可用,cgmanager 本身不連接到系統匯流排,所以 cgmanager/cgproxy 不要求有運行中的 dbus 守護進程。

你可以在這裡閱讀更多關於 D-Bus API。

許可證

CGManager 是免費軟體,大部分代碼是根據 GNU LGPLv2.1+ 許可條款發布的,一些二進位文件是在 GNU GPLv2 許可下發布的。

該項目的默認許可證是 GNU LGPLv2.1+

支持

CGManager 的穩定版本支持依賴於 Linux 發行版以及它們自己承諾推出穩定修復和安全更新。

你可以從 Canonical Ltd 獲得對 Ubuntu LTS 版本的 CGManager 的商業支持。

via: https://linuxcontainers.org/cgmanager/introduction/

作者:Canonical Ltd. 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國