Ne manquez pas nos offres limitées !

Comment corriger l’erreur Docker permission denied sur Ubuntu

Comment corriger l’erreur Docker permission denied sur Ubuntu

L’erreur Docker permission denied se produit généralement lorsque votre compte utilisateur n’a pas l’autorisation d’accéder au socket du démon Docker ou aux fichiers et répertoires requis.

Docker utilise ces restrictions pour empêcher tout accès non autorisé. Mais ils peuvent perturber votre flux de travail lorsque vous mettez en place des environnements de développement sur Ubuntu.

Pour corriger l’erreur Docker permission denied, suivez ces six solutions éprouvées :

  1. Modifier l’appartenance au groupe d’utilisateurs. Ajoutez votre compte d’utilisateur au groupe docker afin de pouvoir exécuter des commandes Docker sans sudo.
  2. Ajuster la propriété des fichiers et des répertoires. Mettre à jour la propriété des fichiers de configuration et des volumes montés pour s’assurer que le moteur Docker peut lire et écrire des données.
  3. Inspecter les permissions des sockets. Vérifiez les niveaux de permission du socket Docker Unix pour confirmer que le canal de communication n’est pas restreint.
  4. Mettre à jour les droits d’exécution des scripts. Assurez-vous que les commandes Dockerfile et les scripts ENTRYPOINT disposent des autorisations d’exécution pour éviter les échecs de démarrage des conteneurs.
  5. Configurer l’accès au matériel. Autoriser les conteneurs à accéder à des périphériques spécifiques, tels que les périphériques USB ou les GPU, afin de résoudre les problèmes d’autorisation liés au matériel.
  6. Actualiser le démon Docker. Redémarrez le service Docker et votre session utilisateur pour appliquer tous les changements de permission et de groupe.

Prérequis

Avant de corriger l’erreur Docker ‘permission denied’, assurez-vous que votre système Linux remplit les conditions requises pour modifier les paramètres administratifs.

  • Accès administratif. Vous devez disposer des privilèges sudo ou root pour modifier les groupes d’utilisateurs et les autorisations de fichiers.
  • Vérification du groupe d’utilisateurs. Vérifiez votre appartenance actuelle à un groupe en exécutant la commande groups $USER.
  • Installation de Docker. Confirmez que Docker est installé et fonctionne en exécutant docker –version.

Bien que ces instructions concernent Ubuntu, elles s’appliquent également à la plupart des distributions basées sur Debian.

1. Ajouter votre utilisateur au groupe Docker

La cause la plus fréquente de l’erreur “permission denied” est que votre compte utilisateur ne fait pas partie du groupe docker.

Par défaut, le démon Docker s’exécute en tant que service appartenant à la racine. Seuls les utilisateurs du groupe docker peuvent communiquer avec lui sans utiliser sudo.

Pour résoudre ce problème, ajoutez votre utilisateur actuel au groupe docker :

sudo usermod -aG docker $USER

Cette commande met à jour votre compte utilisateur en l’ajoutant (-a) au groupe spécifié (-G). En conséquence, votre utilisateur obtient la permission d’accéder au socket du démon Docker et d’exécuter directement des commandes Docker.

Pour appliquer la nouvelle appartenance à un groupe, déconnectez-vous, puis reconnectez-vous.

Après vous être reconnecté, confirmez que la modification a pris effet :

id -nG

La sortie doit inclure docker dans la liste des groupes.

Si vous voulez tester immédiatement sans vous déconnecter, exécutez :

newgrp docker

Cette commande applique le changement de groupe à la session de terminal en cours uniquement.

2. Corriger les problèmes d’autorisation de fichiers et de répertoires

Si l’ajout de votre utilisateur au groupe ne résout pas le problème, des autorisations incorrectes sur les fichiers de configuration ou les volumes montés peuvent être à l’origine de l’erreur.

Docker a besoin d’un accès en lecture et en écriture à ses fichiers de configuration, en particulier config.json.

Tout d’abord, vérifiez les autorisations de votre répertoire de configuration Docker local :

ls -l ~/.docker/

Si la sortie indique que les fichiers appartiennent à root au lieu de votre utilisateur, modifiez la propriété à l’aide de la commande chown :

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

Cette commande modifie récursivement la propriété du répertoire .docker en faveur de votre utilisateur actuel.

Ensuite, corrigez les problèmes d’autorisation liés aux volumes montés. Lorsque vous montez un répertoire hôte dans un conteneur, l’utilisateur du conteneur doit avoir l’autorisation de lire ou d’écrire dans ce répertoire.

Par exemple, si vous exécutez un conteneur avec un montage de volume :

docker run -v ~/data:/app/data ubuntu

Assurez-vous que le répertoire hôte ~/data a les bonnes permissions. Vous pouvez accorder un accès en lecture et en écriture à l’utilisateur (u) à l’aide de la commande chmod suivante :

chmod u+rw ~/data

Cela garantit que l’utilisateur qui possède le répertoire dispose de suffisamment d’autorisations pour gérer les données contenues dans le volume monté.

3. Vérifier les permissions du socket Docker

Le démon Docker communique par l’intermédiaire d’un socket Unix situé dans /var/run/docker.sock. Si ce socket a des permissions incorrectes, le client Docker ne peut pas envoyer de commandes au démon.

Vérifier les permissions actuelles du socket :

ls -l /var/run/docker.sock

Vous devriez obtenir un résultat similaire à celui qui suit :

srw-rw---- 1 root docker 0 Dec 18 10:00 /var/run/docker.sock

Cette sortie montre que root possède le socket et que le groupe docker a un accès en lecture et en écriture. Si vous voyez cette sortie et que votre utilisateur appartient au groupe docker, la configuration du socket est correcte.

Si le groupe n’est pas docker ou si les permissions sont différentes, ne les changez pas manuellement en exécutant chmod 666 /var/run/docker.sock, en particulier dans les environnements de production.

Cette commande crée un risque de sécurité important en donnant à tous les utilisateurs du système l’accès au démon Docker, ce qui permet d’exercer un contrôle de niveau racine sur l’hôte.

Au lieu de cela, comptez sur l’appartenance à un groupe en ajoutant votre utilisateur au groupe Docker. Le démon Docker définit automatiquement les autorisations de socket correctes au démarrage.

4. Corriger les permissions du Dockerfile ou du script ENTRYPOINT

Une erreur de refus de permission Docker peut également se produire à l’intérieur d’un conteneur lorsque le script d’entrée n’a pas les permissions d’exécution.

Ce problème apparaît souvent lorsque vous déplacez des scripts d’un système de fichiers non-Linux, tel que Windows, dans le contexte de construction de Docker. Dans ce cas, le bit exécutable peut être perdu.

Dans ce cas, le conteneur ne démarre pas car il ne peut pas exécuter le script défini dans l’instruction ENTRYPOINT ou CMD.

Pour résoudre ce problème, ajoutez une instruction RUN après la ligne COPY dans votre fichier Docker. Cela permet d’accorder des autorisations d’exécution au script.

RUN chmod +x /usr/local/bin/entrypoint.sh

Cela garantit que le script reste exécutable quelles que soient ses autorisations sur la machine hôte. Vous aurez souvent besoin de cette étape pour créer des images personnalisées qui reposent sur des scripts de démarrage.

5. Accorder l’accès aux périphériques pour les conteneurs Docker

Si un conteneur doit interagir avec des périphériques matériels, tels qu’une clé USB, une webcam ou un GPU, vous pouvez voir une erreur de permission refusée pour un chemin de périphérique tel que /dev/ttyUSB0.

Par défaut, les conteneurs fonctionnent de manière isolée et ne peuvent pas accéder aux périphériques hôtes. Pour autoriser l’accès, passez explicitement le périphérique lorsque vous démarrez le conteneur à l’aide de l’option –device :

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

Si le conteneur a besoin d’autorisations plus larges mais pas d’un accès complet aux périphériques, il faut lui accorder des capacités Linux spécifiques à l’aide de l’option –cap-add :

docker run --cap-add=SYS_ADMIN my-image

Cette approche suit le principe du moindre privilège – n’accorder que les capacités dont le conteneur a réellement besoin. Les fonctionnalités communes comprennent NET_ADMIN pour la configuration du réseau et SYS_PTRACE pour le débogage.

Lorsque des périphériques ou des capacités spécifiques ne suffisent pas, vous pouvez utiliser l’option –privileged :

docker run --privileged my-image

Cette option donne au conteneur un accès complet à tous les dispositifs hôtes et désactive la plupart des fonctions d’isolation de la sécurité.

Les conteneurs démarrés dans ce mode peuvent prendre le contrôle du système hôte au niveau de la racine. N’utilisez –privileged que dans des environnements de développement locaux fiables ou lorsqu’il n’existe pas d’autres solutions plus sûres.

Pour les charges de travail de production, préférez toujours –device pour un matériel spécifique ou –cap-add pour des capacités spécifiques.

6. Redémarrer Docker et tester votre configuration

Après avoir modifié les groupes d’utilisateurs ou les autorisations, redémarrez le service Docker pour que le démon reconnaisse la configuration mise à jour.

Redémarrez Docker avec systemctl :

sudo systemctl restart docker

Après le redémarrage du service, vérifiez la correction en exécutant le conteneur standard hello-world sans utiliser sudo :

docker run hello-world

Si l’image se télécharge et s’exécute correctement et affiche un message de bienvenue, vous avez résolu le problème d’autorisation.

Si l’erreur persiste, redémarrez l’ensemble du système pour vous assurer que toutes les appartenances à des groupes et les modifications de session sont prises en compte :

sudo reboot

Quelles sont les prochaines étapes pour apprendre Docker ?

Maintenant que votre installation Docker fonctionne sans erreur de permission, vous êtes prêt à travailler avec des conteneurs en toute confiance et en toute sécurité.

La résolution des problèmes d’environnement est une première étape essentielle dans votre parcours d’apprentissage de Docker. Il vous permet de vous concentrer sur la création et le déploiement d’applications plutôt que sur la résolution de problèmes d’installation.

L’étape suivante consiste à approfondir votre compréhension des concepts fondamentaux de Docker en lisant notre tutoriel complet sur Docker. Il couvre la gestion des images, les cycles de vie des conteneurs, Docker Compose, la persistance des données et la mise en réseau des conteneurs.

Tout le contenu des tutoriels de ce site est soumis aux normes éditoriales et aux valeurs rigoureuses de Hostinger.

Author
L'auteur

Chaimaa Chakir

Chaimaa est une spécialiste du référencement et du marketing de contenu chez Hostinger. Elle est passionnée par le marketing digital et la technologie. Elle espère aider les gens à résoudre leurs problèmes et à réussir en ligne. Chaimaa est une cinéphile qui adore les chats et l'analyse des films.

Ce que disent nos clients

Laissez une réponse

Veuillez remplir les champs obligatoires.Veuillez cocher la case de la confidentialité.Veuillez remplir les champs obligatoires et accepter la case de confidentialité.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.