Docker Permission Denied Error Linux

Table des matières

Si vous configurez Docker sous Linux, vous pourriez rencontrer le message frustrant «autorisation refusée » Erreur. Cela se produit généralement lorsque votre compte utilisateur n’a pas accès au démon Docker ou aux fichiers et répertoires dont Docker a besoin. Bien que ces restrictions protègent votre système, elles peuvent interrompre votre flux de travail, en particulier lors de la configuration des environnements de développement.

Dans ce guide, j’expliquerai les causes courantes de cette erreur et partagerai des solutions pratiques afin que vous puissiez faire fonctionner Docker sans problème.

Comprendre l’erreur d’autorisation Docker refusée

Les commandes Docker communiquent avec le démon Docker, qui s’exécute en tant qu’utilisateur root. C’est pourquoi Docker nécessite des autorisations élevées. Lorsque votre compte utilisateur ne dispose pas de l’accès nécessaire, le système bloque la commande et affiche une erreur « autorisation refusée ».

Cette erreur montre que l’utilisateur actuel ne peut pas accéder au service Docker. Les causes courantes incluent le fait que l’utilisateur ne fait pas partie du groupe Docker, l’exécution de commandes Docker sans privilèges administratifs ou des autorisations de fichier ou de socket incorrectes qui empêchent la communication avec le démon Docker.

Utilisez sudo pour exécuter les commandes Docker

Le moyen le plus rapide et le plus sûr de corriger les erreurs d’autorisation Docker refusée consiste à exécuter les commandes Docker avec sudo. Cela accorde temporairement les privilèges requis, permettant à la commande de s’exécuter sans interruption. Par exemple, pour lister les conteneurs en cours d’exécution, nous pouvons exécuter le docker ps commande avec sudo comme ça:

sudo docker ps
Corriger l'autorisation refusée avec Sudo

Cela fonctionne instantanément et est idéal pour les tâches ponctuelles. Cependant, en tapant sudo car chaque commande Docker peut être peu pratique pour une utilisation quotidienne.

Ajouter un utilisateur au groupe Docker

Bien que l’utilisation de sudo puisse arrêter l’erreur d’autorisation refusée, elle nécessite toujours un accès élevé à chaque fois que vous exécutez une commande Docker. Une solution meilleure et plus permanente consiste à autoriser l’accès non root en ajoutant votre utilisateur au groupe Docker. Cela supprime le besoin d’utiliser sudo à chaque fois.

Docker utilise un groupe Unix appelé docker pour contrôler l’accès à son démon. Si le groupe n’existe pas déjà, créez-le à l’aide de la commande ci-dessous :

sudo groupadd -f docker

Ensuite, ajoutez votre utilisateur actuel au groupe Docker avec la commande suivante :

sudo usermod -aG docker $USER

Après avoir exécuté la commande, appliquez les modifications de groupe. Vous pouvez soit démarrer une nouvelle session de groupe, soit vous déconnecter et vous reconnecter :

newgrp docker

Pour confirmer que votre utilisateur fait désormais partie du groupe Docker, vérifiez vos appartenances à des groupes :

groups
Vérifier l'appartenance au groupe d'utilisateurs

Enfin, vérifiez le correctif en exécutant une commande Docker sans sudo :

docker ps
Corriger les autorisations en ajoutant un utilisateur au groupe Docker

Si la commande s’exécute sans erreur d’autorisation, vous avez activé avec succès l’accès Docker non root. Cette approche est idéale pour les développeurs qui utilisent régulièrement Docker, car elle supprime les problèmes d’autorisation répétés et fournit un flux de travail propre et sans tracas.

Corriger les autorisations de fichiers et de sockets

Si l’ajout de votre utilisateur au groupe Docker ne résout pas le problème, le problème peut provenir des autorisations de fichier ou de répertoire. Docker s’appuie sur des fichiers et répertoires spécifiques pour communiquer avec le démon. Une propriété ou des droits d’accès incorrects peuvent bloquer les commandes.

Dans ce cas, commencez par vérifier le fichier socket Docker, qui est le principal canal de communication entre Docker et le démon. Ce socket doit appartenir à root et appartenir au groupe Docker.

ls -l /var/run/docker.sock
Vérifiez le fichier de socket Docker

Si la propriété est incorrecte, corrigez-la avec la commande suivante :

sudo chown root:docker /var/run/docker.sock

Ensuite, assurez-vous que vous possédez le répertoire caché « .docker » dans votre dossier « home ». Docker utilise ce répertoire pour stocker les données de configuration et d’authentification. Si la propriété est erronée, mettez-la à jour de manière récursive afin que tous les fichiers qu’il contient appartiennent à votre utilisateur :

sudo chown -R "$USER":"$USER" $HOME/.docker

Après cela, accordez des autorisations de lecture et d’écriture au groupe pour garantir un accès fluide :

sudo chmod -R g+rw "$HOME/.docker"

N’oubliez pas que Docker crée le répertoire « .docker » uniquement après vous être connecté à Docker Hub à l’aide de la connexion Docker. Si le répertoire n’existe pas et que vous voyez un message « Aucun fichier ou répertoire de ce type », vous pouvez l’ignorer en toute sécurité.

Après ces corrections, Docker devrait communiquer correctement avec le démon.

Accorder aux conteneurs l’accès aux périphériques matériels

Certaines erreurs d’autorisation Docker se produisent lorsque les conteneurs tentent d’accéder à des périphériques matériels tels que des ports USB, des GPU ou des cartes son. Dans ces cas, Docker peut bloquer la demande et afficher des erreurs telles que « autorisation refusée : /dev/ttyUSB0 ».

Pour autoriser l’accès à un appareil spécifique, démarrez le conteneur avec le --device option:

docker run --device=/dev/ttyUSB0 your-image

Si le conteneur a besoin d’un accès complet aux appareils hôtes, vous pouvez l’exécuter dans --privileged mode:

docker run --privileged your-image

Le mode privilégié est couramment utilisé pour les projets IoT, les charges de travail GPU ou l’accès aux périphériques USB et série. Mais il doit être utilisé avec prudence car il accorde au conteneur un accès complet à votre hôte, ce qui peut être risqué avec des images non fiables. Préférer --device pour un accès limité dans la mesure du possible.

Redémarrer le moteur Docker

Parfois, les erreurs Docker peuvent être résolues simplement en redémarrant le service Docker. Le redémarrage garantit que Docker actualise ses processus et résout les problèmes temporaires susceptibles de causer des problèmes.

Pour redémarrer Docker, ouvrez votre terminal et exécutez la commande suivante :

sudo service docker restart

Cette commande n’affiche aucune sortie lors de son exécution. Pour confirmer que Docker a redémarré avec succès, vérifiez son état avec :

service docker status

Recherchez le champ Actif dans la sortie. S’il est actif (en cours d’exécution), cela signifie que le service Docker fonctionne correctement.

Après cela, vous pouvez tester si l’erreur précédente a été résolue en exécutant une commande Docker. Par exemple, essayez de lister les conteneurs Docker en cours d’exécution :

docker ps

Si la commande s’exécute avec succès et affiche vos images, cela indique que Docker fonctionne correctement et que l’erreur a été corrigée.

Conclusion

Les erreurs d’autorisation Docker sous Linux peuvent être frustrantes, mais elles ne doivent pas nécessairement vous ralentir. La plupart du temps, exécuter des commandes avec sudo, ajouter votre utilisateur au groupe Docker ou corriger les autorisations de fichiers et de sockets remettra les choses sur les rails. Pour les conteneurs nécessitant un accès matériel, le --device le mode drapeau ou privilégié est pratique. Et parfois, un simple redémarrage de Docker suffit.

Avec ces correctifs en place, Docker fonctionnera correctement, vous permettant de vous concentrer sur la création et la gestion des conteneurs sans interruptions constantes.

Partager :
Facebook
Twitter
LinkedIn

Gentil Geek

Passionné d'informatique depuis ma plus tendre enfance aujourd'hui j'en ai fait mon métier. A vos côtés pour simplifier votre utilisation de l'informatique et vous permettre de gagner en compétences.

Poster le commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *