Что такое 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.