¿Qué es cgroupfs y cómo se usa con Docker?

16

En la documentación de Docker hay una discusión de opciones para el controlador de ejecución nativo ( https://docs.docker.com/engine/reference/commandline/daemon/ ). La documentación dice

La opción native.cgroupdriver especifica la administración de los cgroups del contenedor. Puede especificar cgroupfs o systemd. Si especifica systemd y no está disponible, el sistema usa cgroupfs. De forma predeterminada, si no se especifica ninguna opción, el controlador de ejecución primero intenta systemd y recurre a cgroupfs. Este ejemplo establece el execdriver en cgroupfs:

Mi pregunta es qué es cgroupfsy cómo se compara systemden este caso. Busca en Google información sobre cgroupfsun tuit :

--exec-opt native.cgroupdriver = cgroupfs FTW. En serio @docker, deje el soporte para cgroups administrados por systemd, es un desastre

Pero espero que alguien pueda proporcionar más detalles sobre lo que realmente hace en lugar de simplemente decir que use una configuración que difiera de la predeterminada.

Gabriel Southern
fuente
Te das cuenta de que todo esto tiene que ver con la asignación de recursos del sistema (CPU) a un contenedor, ¿verdad? systemd tiene integrada la integración de cgroup. Cgroupfs es una vista del sistema de archivos de la interfaz cgroup del kernel. Si esto es lo que está buscando, lo pondré en una respuesta. Pero si ya sabes esto, tendría que buscar el código.
Oteo
@Otheus No puse la recompensa por la pregunta, así que no estoy seguro de qué le interesa a la persona que lo hizo. Lo principal que me motivó a hacer la pregunta fue el deseo de comprender por qué alguien recomendó usar la opción --exec-opt native.cgroupdriver=cgroupfs. Pero sospecho que si escribiste una respuesta explicando la configuración que es más fácil de entender para un principiante que lo que está en la documentación de Docker, obtendrías algunos votos positivos y también podría ser útil para las personas que encuentren la pregunta de Google en el futuro.
Gabriel Southern

Respuestas:

1

Como puedo ver en los comentarios de las fuentes en: 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.

cgroupfsparece ser una libcontainerimplementación propia de docker ( ) que configura contenedores que cgroupsescriben directamente en archivos cgroups-file-system(por ejemplo, montados en /sys/fs/cgroup/).

Snorch
fuente