В документации Docker обсуждаются варианты встроенного execdriver ( https://docs.docker.com/engine/reference/commandline/daemon/ ). В документации сказано
Опция native.cgroupdriver определяет управление cgroups контейнера. Вы можете указать cgroupfs или systemd. Если вы укажете systemd, а он недоступен, система использует cgroupfs. По умолчанию, если опция не указана, execdriver сначала пытается использовать systemd и возвращается к cgroupfs. Этот пример устанавливает execdriver в cgroupfs:
Мой вопрос: что это такое cgroupfs
и как оно сравнивается systemd
в этом случае? Погуглил информацию о cgroupfs
привел к твиту :
--exec-opt native.cgroupdriver = cgroupfs FTW. серьезно @docker, откажитесь от поддержки cgroups, управляемых systemd, это катастрофа
Но я надеюсь, что кто-то может предоставить более подробную информацию о том, что это на самом деле делает, вместо того, чтобы просто сказать, использовать параметр, который отличается от значения по умолчанию.
--exec-opt native.cgroupdriver=cgroupfs
. Но я подозреваю, что если вы напишете ответ, объясняющий настройку, которую новичку будет легче понять, чем то, что содержится в документации Docker, вы получите несколько голосов, и это может быть полезно для людей, которые найдут вопрос в Google в будущем.Ответы:
Как я могу видеть из комментариев в источниках в:
vendor/src/github.com/opencontainers/runc/libcontainer/factory_linux.go
cgroupfs
Кажется, это собственная реализация docker (libcontainer
), которая настраивает контейнеры,cgroups
записывающие файлы напрямуюcgroups-file-system
(например, смонтированные в/sys/fs/cgroup/
).источник