Linux

Erreur “cgroup v2 non supporté” sous Docker Linux : Solutions et Résolution

Erreur “cgroup v2 non supporté” sous Docker Linux : Solutions et Résolution

Le message d’erreur “cgroup v2 not supported” sous Docker sur Linux indique un problème de compatibilité entre la version de cgroups utilisée par votre système et celle que Docker essaie d’utiliser. Ce problème se manifeste souvent lorsqu’un système essaie de tirer parti des fonctionnalités de cgroup v2, mais que celle-ci n’est pas activée ou supportée dans la configuration actuelle du noyau Linux. Cela peut entraîner des difficultés d’exécution et de gestion des conteneurs, rendant impossible leur lancement correct.


Points Clés

  • Contexte de l’erreur : L’erreur survient généralement lorsqu’un utilisateur ou une application tente d’utiliser cgroups v2 sans qu’il soit activé dans le noyau.
  • Solutions possibles : Inclut la mise à jour du noyau, l’activation de cgroups v2 dans les paramètres du démarrage de GRUB et la vérification de la configuration de Docker.
  • Meilleures pratiques : Prenez des mesures préventives pour vous assurer que votre environnement est correctement configuré pour éviter de futurs problèmes.
A lire :  Micro ne fonctionne pas sous Arch Linux : Solutions et Résolutions.

Comprendre cgroups et Docker

Qu’est-ce que cgroup ?

Les cgroups, ou control groups, sont une fonctionnalité du noyau Linux qui permet de limiter, surveiller et isoler l’utilisation des ressources (CPU, mémoire, etc.) d’un groupe de processus. Cela permet une gestion efficace des ressources sur un système multi-utilisateur et multi-tâches.

Qu’est-ce que cgroup v2 ?

La version 2 des cgroups introduit une hiérarchie unifiée qui simplifie la gestion des ressources. Contrairement à cgroup v1, qui séparait les ressources par classe, cgroup v2 permet un contrôle plus cohérent et centralisé.

Pourquoi l’erreur se produit-elle souvent sous Docker ?

Docker dépend de cgroups pour gérer les ressources des conteneurs. Si votre système exécute une version de Linux qui ne prend pas en charge ou n’a pas activée cgroup v2, vous rencontrerez l’erreur “cgroup v2 not supported”.


Causes Possibles

  1. Version du noyau : Votre noyau Linux peut être trop ancien pour supporter cgroup v2.
  2. Configuration GRUB : Les options de démarrage dans GRUB peuvent ne pas inclure la configuration correcte pour activer cgroup v2.
  3. Installation de Docker : Une version de Docker qui n’est pas compatible avec cgroup v2 peut également jouer un rôle.

Guide de Dépannage Étape par Étape

Étape 1 : Vérification de la Version du Noyau

Commencez par vérifier la version de votre noyau avec la commande :

bash
uname -r

Solution : Si la version est inférieure à Linux 5.4, envisagez de mettre à jour votre noyau.


Étape 2 : Modifiez la Configuration de GRUB

Pour activer cgroup v2, vous devez modifier la configuration de GRUB. Voici comment procéder :

  1. Ouvrez le fichier /etc/default/grub avec votre éditeur de texte préféré :

    bash
    sudo nano /etc/default/grub

  2. Trouvez la ligne commençant par GRUB_CMDLINE_LINUX_DEFAULT et ajoutez systemd.unified_cgroup_hierarchy=1. Par exemple :

    bash
    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash systemd.unified_cgroup_hierarchy=1″

  3. Mettez à jour GRUB :

    bash
    sudo update-grub

  4. Redémarrez votre système :

    bash
    sudo reboot

A lire :  Optimiser la Précision Temporelle : Gestion du Time Drift sous Machines Virtuelles Linux

Étape 3 : Vérifiez si cgroup v2 est Activé

Après le redémarrage, vérifiez si cgroup v2 est maintenant activé :

bash
cat /sys/fs/cgroup/cgroup.controllers

Si le fichier existe et affiche des contrôleurs, cela signifie que cgroup v2 est activé.


Étape 4 : Vérifiez la Configuration de Docker

Si l’erreur persiste, vérifiez la configuration de Docker pour vous assurer qu’il est configuré pour utiliser cgroup v2. Ouvrez le fichier de configuration Docker (généralement situé dans /etc/docker/daemon.json) et assurez-vous qu’il n’y a pas de paramètres qui le contraignent à cgroup v1.

json
{
“default-address-pools”: [
{
“base”: “10.10.0.0/16”,
“size”: 24
}
] // Assurez-vous que cgroup v1 n’est pas spécifié ici
}

Redémarrez le service Docker après avoir apporté des modifications :

bash
sudo systemctl restart docker


Erreurs Courantes et Comment les Éviter

  • Ne pas redémarrer après modification de GRUB : Cela signifie que les nouvelles configurations ne seront pas prises en compte. Assurez-vous toujours de redémarrer le système.
  • Installer des versions obsolètes de Docker : Utilisez toujours les dernières versions stables de Docker compatibles avec votre noyau.
  • Ignorer les dépendances de votre distribution : Assurez-vous que tous les paquets nécessaires sont installés, notamment libcgroup.

Meilleures Pratiques et Conseils de Prévention

  • Mettre à jour régulièrement votre noyau : Assurez-vous de toujours utiliser une version révisée du noyau qui prend en charge les nouvelles améliorations, y compris cgroup v2.
  • Vérifiez la configuration du système après les mises à jour : Les mises à jour du système peuvent modifier vos configurations. Vérifiez toujours après une mise à jour majeure.
  • Utilisez des outils de gestion de conteneurs modernes : Explorez les alternatives à Docker comme Podman qui gèrent mieux les cgroups.
A lire :  Comment résoudre l'erreur : Impossible de monter un disque NTFS sous Linux

FAQ

Comment savoir si cgroup v2 est activé sur mon système ?

Exécutez la commande suivante pour vérifier :

bash
cat /sys/fs/cgroup/cgroup.controllers

Si le fichier existe et affiche des contrôleurs, alors cgroup v2 est activé.

Quelles sont les différences entre cgroup v1 et v2 ?

Cgroup v1 sépare les ressources par classe tandis que cgroup v2 introduit une hiérarchie unifiée, facilitant ainsi la gestion des ressources.

Pourquoi Docker ne démarre-t-il pas après avoir activé cgroup v2 ?

Assurez-vous que la version de Docker que vous utilisez est compatible avec cgroup v2. Vérifiez également les fichiers de configuration.

Que faire si je ne peux pas redémarrer le système ?

Si vous ne pouvez pas redémarrer, vérifiez votre fichier de configuration Docker et assurez-vous que toutes les dépendances nécessaires sont présentes.


En conclusion, l’erreur “cgroup v2 not supported” sous Docker sur Linux est généralement due à une mauvaise configuration dans le noyau ou dans Docker lui-même. Une vérification minutieuse de votre environnement, ainsi que les ajustements mentionnés ci-dessus, peuvent résoudre ce problème et permettre un fonctionnement optimal de vos conteneurs Docker.