Що таке cgroupfs і як він використовується з Docker?


16

У документації Docker є обговорення варіантів для власного виконавця ( https://docs.docker.com/engine/reference/commandline/daemon/ ). У документації йдеться

Параметр native.cgroupdriver вказує управління групами контейнера. Ви можете вказати cgroupfs або systemd. Якщо ви вказали systemd і він недоступний, система використовує cgroupfs. За замовчуванням, якщо не вказано жодного варіанта, execdriver спочатку спробує systemd і повернеться до cgroupfs. Цей приклад встановлює execdriver до cgroupfs:

Моє запитання - що таке cgroupfsі як воно порівнюється systemdв даному випадку? Гугл для інформації про те, що cgroupfsпризвів до твіту :

--exec-opt native.cgroupdriver = cgroupfs FTW. серйозно @docker, кинь підтримка груп, якими керує systemd, це катастрофа

Але я сподіваюсь, що хтось може надати більше детальних відомостей про те, що це насправді, а не просто сказати використовувати налаштування, яке відрізняється від типового.


Ви розумієте, що це все пов'язане з розподілом ресурсів системи (CPU) в контейнер, правда? systemd має вбудовану інтеграцію cgroup. Cgroupfs - це перегляд файлової системи інтерфейсу cgroup ядра. Якщо це те, що ви шукаєте, я поставлю це у відповідь. Але якщо ви це вже знаєте, мені доведеться перекопати код.
Отей

@Otheus Я не ставив щедрості питання, тому я не впевнений, чим зацікавлена ​​людина, яка зробила. Головне, що мотивувало мене задати питання, - це бажання зрозуміти, чому хтось рекомендував використовувати цей варіант --exec-opt native.cgroupdriver=cgroupfs. Але я підозрюю, що якщо ви написали відповідь, в якій пояснювали налаштування, яке початківцю простіше зрозуміти, ніж те, що є в документації Докера, що ви отримаєте кілька оновлень, і це може бути корисно людям, які знайдуть питання від Google і в майбутньому.
Габріель Південний

Відповіді:


1

Як я бачу з коментарів джерел у: vendor/src/github.com/opencontainers/runc/libcontainer/factory_linux.go

// Cgroupfs is an options func to configure a LinuxFactory to return
// containers that use the native cgroups filesystem implementation to
// create and manage cgroups.

cgroupfsздається, є власною docker ( libcontainer) реалізацією, яка налаштовує контейнери, що cgroupsзаписують безпосередньо у файли cgroups-file-system(наприклад, встановлені у /sys/fs/cgroup/).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.