Что такое CGManager?

CGManager это основной привилегированный демон, управляющий всеми вашими cgroups для вас с помощью простого API D-Bus. Он спроектирован для работы с вложенными контейнерами LXC но также допускает непривилегированные запросы включающие разрешение пользовательских пространств имен UIDs/GIDs.

Компоненты

cgmanager

Этот демон запускается на хосте, монтирует cgroupfs в отдельное монтируемое пространство имен (так что оно недоступно с хоста), привязывает /sys/fs/cgroup/cgmanager/sock для входящих запросов D-Bus и обычно обслуживает всех клиентов, запущенных на хосте.

cgmanager принимает одновременно запросы аутентификации с использованием D-Bus + данных аутентификации SCM используемых для трансляции uid, gid и pid по пространствам имен или с использованием "неаутентифицированных" (снабженных только начальным ucred) D-Bus для запросов с уровня хоста.

cgproxy

Вы можете увидеть этот демон запущенным в двух случаях. На хосте если ваше ядро старее 3.8 (не имеет поддержки связывания pidns) или в контейнерах (где запущен только cgproxy).

cgproxy сам не изменяет конфигурацию cgroup но, как показывает его имя, проксирует запросы к основному процессу cgmanager.

Требуется, чтобы процесс мог сообщатся с /sys/fs/cgroup/cgmanager/sock через straight D-Bus (например используя dbus-send).

cgproxy получает ucred из запроса и посылает аутентифицированный запрос SCM в настоящий сокет cgmanager, посылая аргументы в структурах 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 сам не присоединяется к системной шине, так что запущенный демон dbus не требуется для cgmanager/cgproxy.

Вы можете узнать больше о D-Bus API здесь.

Лицензирование

CGManager это свободное программное обеспечение, большая часть исходного кода выпущена на условиях лицензии GNU LGPLv2.1+, некоторые бинарные файлы выпущены под лицензией GNU GPLv2.

Основная лицензия проекта GNU LGPLv2.1+.

Поддержка

Поддержка стабильного релиза полагается на дистрибутивы Linux и их вклад в продвижение исправлений стабильности и обновлений безопасности.

Коммерческая поддержка CGManager на выпусках Ubuntu LTS может быть получена от Canonical Ltd.