Qu'est-ce que cgroupfs et comment est-il utilisé avec Docker?

16

Dans la documentation Docker, il y a une discussion des options pour l'exécdriver natif ( https://docs.docker.com/engine/reference/commandline/daemon/ ). La documentation dit

L'option native.cgroupdriver spécifie la gestion des groupes de contrôle du conteneur. Vous pouvez spécifier cgroupfs ou systemd. Si vous spécifiez systemd et qu'il n'est pas disponible, le système utilise cgroupfs. Par défaut, si aucune option n'est spécifiée, l'execdriver essaie d'abord systemd et revient à cgroupfs. Cet exemple définit l'exécdriver sur cgroupfs:

Ma question est ce qui est cgroupfset comment se compare-t-il systemddans ce cas? Rechercher des informations sur a cgroupfsconduit à un tweet :

--exec-opt native.cgroupdriver = cgroupfs FTW. sérieusement @docker, abandonner le support des cgroups gérés par systemd, c'est un désastre

Mais j'espère que quelqu'un pourra fournir plus de détails sur ce que cela fait réellement plutôt que de simplement dire utiliser un paramètre différent de celui par défaut.

Gabriel Southern
la source
Vous vous rendez compte que tout cela a à voir avec l'allocation de ressources système (CPU) à un conteneur, non? systemd a intégré l'intégration de cgroup. Cgroupfs est une vue du système de fichiers de l'interface de cgroup du noyau. Si c'est ce que vous cherchez, je vais le mettre dans une réponse. Mais si vous le savez déjà, je devrais fouiller dans le code.
Otheus
@Otheus, je n'ai pas mis la prime sur la question, donc je ne sais pas ce qui intéresse la personne qui l'a fait. La principale raison qui m'a motivée à poser la question était le désir de comprendre pourquoi quelqu'un recommandait d'utiliser l'option --exec-opt native.cgroupdriver=cgroupfs. Mais je soupçonne que si vous écriviez une réponse expliquant le paramètre plus facile à comprendre pour un débutant que ce qui se trouve dans la documentation Docker, vous obtiendriez des votes positifs et que cela pourrait être utile aux personnes qui trouveraient la question de Google à l'avenir également.
Gabriel Southern

Réponses:

1

Comme je peux le voir dans les commentaires des sources dans: 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.

cgroupfssemblent être la propre libcontainerimplémentation de docker ( ) qui configure les conteneurs cgroupsécrivant directement sur les fichiers cgroups-file-system(par exemple montés dans /sys/fs/cgroup/).

Snorch
la source