exécution d’applications avec Docker en tant que routine quotidienne peut devenir un cauchemar lorsque vous rencontrez une erreur telle que la permission Docker refusée lors de la tentative de connexion. Mais ne vous inquiétez pas, cet article vous aidera à reprendre rapidement.
Dans ce tutoriel, vous apprendrez de nombreuses façons de résoudre le redouté message d’erreur de permission Docker refusée.
Prérequis
Ce tutoriel comprend des démonstrations pratiques. Pour suivre, assurez-vous d’avoir les éléments suivants en place:
- Les démonstrations de ce tutoriel s’exécutent sur Ubuntu 20.04, mais d’autres distributions Linux fonctionneront également.
- Le moteur Docker, avec le tutoriel exécutant la version 20.10.8, build 3967b7d.
Exécution de commandes Docker avec élévation de privilèges
De nombreux facteurs peuvent conduire à une erreur permission refusée lors de la connexion à Docker. L’un de ces facteurs est que vous pourriez exécuter des commandes Docker sans préfixer la commande sudo
. La commande sudo
est ce qui vous donne des droits administratifs élevés ainsi que des privilèges de sécurité lors de l’exécution de commandes.
Ci-dessous, vous pouvez voir la redoutée erreur permission refusée lors de la tentative d’exécution d’une commande docker
.

Lancez votre terminal et préfixez la commande sudo
à la commande docker
ci-dessous pour exécuter l’image Docker hello-world
. Puisque vous exécutez une commande élevée, vous devrez saisir votre mot de passe pour continuer.
Vous verrez une sortie similaire à celle indiquée ci-dessous qui indique que Docker est installé correctement.

Redémarrage du moteur Docker
Si l’exécution de commandes Docker élevées ne résout pas l’erreur permission denied, vérifiez que votre moteur Docker est en cours d’exécution. Tout comme l’exécution d’une commande docker
sans la commande sudo
, un moteur Docker arrêté déclenche l’erreur permission denied. Comment résoudre l’erreur? En redémarrant votre moteur Docker.
Exécutez la commande systemctl
ci-dessous pour confirmer le statut du moteur Docker (status docker
) et s’il est en cours d’exécution.
Ci-dessous, vous pouvez voir que le moteur Docker fonctionne à partir du statut renvoyé qui montre unctive (running).

Si le moteur Docker n’est pas actif, exécutez la commande systemctl
ci-dessous pour démarrer le moteur Docker (start docker
).
Maintenant, exécutez la commande hello-world Docker comme vous l’avez fait dans la section « Exécution de commandes Docker surélevées » pour vérifier que l’erreur est résolue.
Ajout d’un compte utilisateur à un groupe avec un accès utilisateur non root
Vous avez confirmé que votre moteur Docker fonctionne, mais vous obtenez toujours une erreur de permission refusée Docker ? Si c’est le cas, vous devez ajouter votre compte utilisateur à un groupe avec un accès utilisateur non root. Pourquoi ? Parce que toute commande Docker que vous exécutez sur une machine Linux qui n’est pas dans le groupe utilisateur déclenche une erreur de permission refusée.
- Exécutez la commande
groupadd
ci-dessous pour créer un nouveau groupe appelédocker
. Entrez votre mot de passe pour continuer à exécuter la commande.
Si le groupe docker existe dans le groupe utilisateur, vous verrez une sortie comme celle ci-dessous.

2. Ensuite, exécutez la commande usermod
ci-dessous où les options -aG
indiquent à la commande d’ajouter votre compte utilisateur (programmer
) au groupe (docker
). Cette commande permet à votre compte utilisateur d’avoir un accès non utilisateur.
3. Exécutez la commande newgrp
ci-dessous pour changer l’identifiant de groupe réel actuel en docker
.
Exécutez cette commande chaque fois que vous souhaitez exécuter Docker en tant qu’utilisateur non root.
4. Enfin, relancez l’image Docker hello-world pour confirmer que vous ne voyez plus l’erreur. Si, à ce stade, vous continuez à obtenir une erreur, envisagez de donner plus d’accès au fichier docker.sock. Le fichier docker.sock est la prise UNIX, un moyen de communiquer des informations de processus entre l’utilisateur et le système, que le démon Docker écoute en tant que point d’entrée de l’API Docker.
Exécutez la commande chmod
ci-dessous pour accorder à tous les utilisateurs un accès en lecture/écriture (666
) au fichier /var/run/docker.sock
. Maintenant, relancez l’image Docker hello-world pour voir si l’erreur est résolue.
Modification du fichier d’unité de service Docker
Si l’exécution de Docker en tant qu’utilisateur non root ne suffit pas à résoudre l’erreur, essayez de modifier le fichier d’unité de service Docker SystemD, un système de contrôle de service. Le fichier de service Docker contient des paramètres sensibles qui peuvent modifier le comportement du démon Docker. Vous pouvez modifier le comportement par défaut du fichier d’unité Docker en ajoutant une commande supplémentaire pour changer le comportement par défaut du service.
1. Exécutez la commande ci-dessous pour ouvrir le fichier d’unité de service Docker dans votre éditeur de texte préféré. Pour cet exemple, le fichier de service Docker s’ouvre dans l’éditeur de texte nano.
2. Localisez la zone avec l’en-tête [Service] à l’intérieur du fichier d’unité de service Docker, comme indiqué ci-dessous. Copiez/collez les commandes ci-dessous dans le fichier d’unité de service Docker et enregistrez les modifications.
Ci-dessous, la commande SupplementaryGroups
définit les groupes Unix supplémentaires là où les processus sont exécutés. En même temps, la commande ExecStartPost
nettoie les opérations qui sont exécutées même si le service échoue à démarrer correctement.

3. Maintenant, exécutez les commandes ci-dessous pour redémarrer et activer le service Docker. Ce faisant, vous pouvez démarrer le service Docker à nouveau pour éviter d’obtenir des erreurs lorsque vous exécutez des commandes Docker.
4. Enfin, relancez l’image Docker hello-world
et vérifiez si vous obtenez toujours l’erreur de permission refusée.
Exécution de Docker en mode de privilège
Enfin, dans la liste de résolution de l’erreur de permission refusée de Docker, il y a l’exécution de Docker en mode privilégié. Ce faisant, un conteneur Docker obtient un accès root au système.
Exécuter Docker en mode privilégié est risqué et vulnérable aux attaques des pirates. Alors, soyez prudent et exécutez Docker en mode privilégié uniquement lorsque vous savez exactement ce que vous faites.
1. Exécutez la commande ci-dessous pour lister tous les conteneurs Docker sur votre système et obtenir l’ID du conteneur que vous souhaitez exécuter.

2. Ensuite, exécutez la commande docker inspect
ci-dessous pour vérifier si le conteneur que vous souhaitez exécuter est déjà en mode privilégié (--format='{{.HostConfig.Privileged}}'
). Remplacez CONTAINER_ID
ci-dessous par l’ID de conteneur réel que vous avez noté à l’étape un.
Si le conteneur est en mode privilégié, la commande renvoie une valeur true à la console. Mais si la commande renvoie une valeur fausse, comme indiqué ci-dessous, passez à l’étape suivante.

3. Enfin, exécutez la commande docker
ci-dessous pour run
le conteneur Docker en mode privilégié (--privileged hello-world
).
Conclusion
Tout au long de ce tutoriel, vous avez appris de nombreuses façons de résoudre l’erreur de permission denied Docker, de l’exécution de commandes élevées à l’exécution de Docker en mode privilégié.
Maintenant, vous savez comment vous débarrasser d’une erreur lors de la construction d’applications alimentées par Docker ; peut-être voulez-vous aussi garder vos images Docker propres en tout temps ?
Source:
https://adamtheautomator.com/docker-permission-denied/