GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Dépannage des problèmes de refus d'autorisation de Docker

L'exécution quotidienne d'applications avec Docker peut devenir un cauchemar lorsque vous rencontrez une erreur telle que l'autorisation Docker refusée lors de la tentative de connexion. Mais ne vous inquiétez pas, cet article vous aidera à vous remettre à courir en un rien de temps.

Dans ce didacticiel, vous apprendrez de nombreuses façons de résoudre le redoutable message d'erreur d'autorisation Docker refusée.

Prérequis

Ce didacticiel comprend des démonstrations pratiques. Pour suivre, assurez-vous d'avoir les éléments suivants en place :

  • Les démos de ce didacticiel fonctionnent sur Ubuntu 20.04, mais d'autres distributions Linux fonctionneront également.
  • Le moteur Docker, avec le didacticiel exécutant la version 20.10.8, build 3967b7d.

Exécuter des commandes Docker avancées

De nombreux facteurs peuvent conduire à une autorisation refusée erreur lors de la connexion à Docker. L'un de ces facteurs est que vous pouvez exécuter des commandes Docker sans ajouter le sudo commande. Le sudo La commande 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 redoutable autorisation refusée erreur lors de la tentative d'exécution d'un docker commande.

Lancez votre terminal et ajoutez sudo au docker commande ci-dessous pour run le hello-world Image Docker. Puisque vous exécutez une commande élevée, vous devrez entrer votre mot de passe pour continuer.

sudo docker run hello-world

Vous verrez une sortie similaire à celle illustrée ci-dessous qui indique que Docker est correctement installé.

Redémarrage du moteur Docker

Si l'exécution de commandes Docker élevées ne résout pas l'autorisation refusée erreur, vérifiez que votre moteur Docker est en cours d'exécution. Semblable à l'exécution d'un docker commande sans le sudo commande, un moteur Docker arrêté déclenche la autorisation refusée Erreur. Comment corrigez-vous l'erreur ? En redémarrant votre moteur Docker.

Exécutez le systemctl commande ci-dessous pour confirmer l'état du moteur Docker (status docker ) et s'il est en cours d'exécution.

sudo systemctl status docker

Ci-dessous, vous pouvez savoir que le moteur Docker est en cours d'exécution à partir du statut renvoyé qui indique actif (en cours d'exécution).

Si le moteur Docker n'est pas actif, exécutez le systemctl commande ci-dessous pour démarrer le Docker Engine (start docker ).

sudo systemctl start docker

Maintenant, exécutez la commande hello-world Docker comme vous l'avez fait dans la section "Exécution des commandes Docker élevées" pour vérifier que l'erreur est résolue.

sudo docker run hello-world

Ajout d'un compte utilisateur à un groupe avec un accès utilisateur non root

Vous avez confirmé que votre moteur Docker fonctionne, mais vous recevez toujours une autorisation refusée Docker Erreur? Si c'est le cas, vous devez ajouter votre compte d'utilisateur à un groupe avec un accès utilisateur non root. Pourquoi? Parce que toute commande Docker que vous exécutez sur une machine Linux ne faisant pas partie du groupe d'utilisateurs déclenche autorisation refusée erreur.

  1. Exécutez le groupadd commande ci-dessous pour créer un nouveau groupe appelé docker . Entrez votre mot de passe pour continuer à exécuter la commande.
sudo groupadd docker

Si le groupe docker existe dans le groupe d'utilisateurs, vous verrez une sortie comme celle ci-dessous.

2. Ensuite, exécutez le usermod commande ci-dessous où le -aG les options indiquent à la commande d'ajouter votre compte utilisateur (programmer ) au (docker ) grouper. Cette commande confère à votre compte d'utilisateur un accès non utilisateur.

sudo usermod -aG docker programmer

3. Exécutez le newgrp commande ci-dessous pour changer l'ID de groupe réel actuel en docker grouper.

Exécutez cette commande chaque fois que vous souhaitez exécuter Docker en tant qu'utilisateur non root.

sudo newgrp docker 

4. Enfin, réexécutez l'image Docker hello-world pour confirmer que vous ne voyez plus l'erreur. Si, à ce stade, vous obtenez toujours une erreur, envisagez de donner plus d'accès au fichier docker.sock. Le docker.sock Le fichier est le socket UNIX, un moyen de communiquer des informations de processus entre l'utilisateur et le système, que le démon Docker écoute comme point d'entrée de l'API Docker.

Exécutez le chmod commande ci-dessous pour autoriser tous les utilisateurs à lire/écrire (666 ) accès au /var/run/docker.sock dossier. Maintenant, exécutez à nouveau l'image Hello-world Docker pour voir si l'erreur est résolue.

sudo chmod 666 /var/run/docker.sock

Modification du fichier d'unité de service Docker

Si l'exécution de Docker en tant qu'utilisateur non root ne suffit pas à corriger l'erreur, essayez de modifier le Docker SystemD, un système de contrôle de service, un fichier d'unité de service. Le fichier de service Docker contient des paramètres sensibles susceptibles de 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 modifier 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.

sudo nano /usr/lib/systemd/system/docker.service

2. Localisez la zone avec le [Service] en-tête à l'intérieur du fichier d'unité de service Docker, comme indiqué ci-dessous. Copiez/collez les commandes ci-dessous dans le fichier de l'unité de service Docker et enregistrez les modifications.

Ci-dessous, les SupplementaryGroups La commande définit les groupes Unix supplémentaires sur lesquels les processus sont exécutés. En même temps, le ExecStartPost La commande nettoie les opérations qui sont exécutées même si le service ne démarre pas correctement.

SupplementaryGroups=docker    
ExecStartPost=/bin/chmod 666 /var/run/docker.sock

3. Maintenant, exécutez les commandes ci-dessous pour redémarrer et activer le service Docker. Cela vous permet de redémarrer le service Docker pour éviter d'obtenir des erreurs lorsque vous exécutez des commandes Docker.

# Reloads all the Docker unit files and recreates the entire dependency tree.
sudo systemctl daemon-reload
# Restarts the Docker service
sudo systemctl start docker
# Enable the Docker to run on your computer.
sudo systemctl enable docker

4. Enfin, relancez le hello-world Image Docker et voyez si vous obtenez toujours l'erreur d'autorisation refusée.

Exécuter Docker en mode Privilège

Enfin et surtout, sur la liste de correction de l'erreur d'autorisation Docker refusée, l'exécution de Docker en mode privilégié. Cela accorde à un conteneur Docker un accès root au système.

L'exécution de Docker en mode privilégié est risquée et vulnérable aux attaques de pirates. Soyez donc prudent et n'exécutez le Docker en mode privilégié que lorsque vous savez exactement ce que vous faites.

1. Exécutez la commande ci-dessous pour répertorier tous les conteneurs Docker de votre système et obtenir l'ID du conteneur que vous souhaitez exécuter.

sudo docker ls -a

2. Ensuite, exécutez le docker inspect commande ci-dessous pour vérifier si le conteneur que vous souhaitez exécuter est déjà en mode privilégié (--format='{{.HostConfig.Privileged}}' ). Remplacer CONTAINER_ID ci-dessous avec l'ID de conteneur réel que vous avez noté à la première étape.

docker inspect --format='{{.HostConfig.Privileged}}' CONTAINER_ID

Si le conteneur est en mode privilégié, la commande renvoie un true valeur à la console. Mais si la commande renvoie une valeur fausse, comme indiqué ci-dessous, passez à l'étape suivante.

3. Enfin, exécutez le docker commande ci-dessous pour run le conteneur Docker en mode privilégié (--privileged hello-world ).

sudo docker run --privileged hello-world

Conclusion

Tout au long de ce didacticiel, vous avez appris de nombreuses façons de résoudre le Docker autorisation refusée erreur, de l'exécution de commandes élevées à l'exécution de Docker en mode privilégié.

Vous savez maintenant comment éliminer une erreur lors de la création d'applications alimentées par Docker ; peut-être souhaitez-vous également que vos images Docker restent propres à tout moment ?


Docker
  1. Comment utiliser la commande Docker Inspect

  2. Comment réparer l'erreur Docker Permission Denied sur Ubuntu

  3. Exemples utiles de la commande Docker ps

  4. erreur de commande 'docker images' - "Autorisation refusée"

  5. commande docker introuvable

Dépannage des problèmes matériels sous Linux

20 exemples de commandes Docker utiles sous Linux

Pourquoi le conteneur Docker invite-t-il l'autorisation refusée ?

autorisation docker.sock refusée

Rediriger la sortie de la commande dans docker

erreur de montage 13 =Autorisation refusée