Comment résoudre les erreurs “Impossible de se connecter au démon Docker”

0
175

Docker est l'une des principales plates-formes de création et d'exécution de conteneurs logiciels. Il est livré avec tout ce dont vous avez besoin pour utiliser des conteneurs sur un seul hôte ou sur plusieurs nœuds distribués en mode Swarm.

Docker a une architecture basée sur des démons. Le logiciel responsable de la création et du démarrage des conteneurs est indépendant du processus CLI qui accepte vos commandes. Cela signifie que vous verrez des erreurs dans la CLI si vous essayez d'exécuter des commandes sans connexion de démon active. Dans cet article, nous partagerons quelques méthodes pour résoudre ces messages frustrants.

Symptômes du problème

La CLI Docker dépend d'une connexion démon être disponible. Il interagit avec le démon à l'aide d'appels d'API. Lorsque le démon configuré est inaccessible, les commandes docker telles que docker ps, docker run et docker build affichent un message d'erreur similaire à celui-ci :

$ docker run hello-world:latest Impossible de se connecter au démon Docker à unix:///var/run/docker.sock Le démon docker est-il en cours d'exécution ?

Cela révèle que la CLI a tenté de communiquer avec le démon Docker à l'aide du socket Unix /var/run/docker.sock. Le socket n'est pas ouvert, la connexion a donc échoué.

1. Vérifiez que le service Docker Daemon est en cours d'exécution

Le démon Docker est généralement géré par un service systemd qui démarre automatiquement Docker après le redémarrage de votre hôte. Vous pouvez commencer le dépannage en vérifiant si ce service est en cours d'exécution :

$ sudo systemctl status docker docker.service – Moteur de conteneur d'application Docker chargé : chargé (/lib/systemd/system/docker.service ; activé ; préréglage du fournisseur : activé ) Actif : inactif (mort)

Le service doit signaler Actif : actif (en cours d'exécution) si le démon est en cours d'exécution. L'exemple ci-dessus montre inactif (mort), ce qui signifie que le démon s'est arrêté.

Démarrez Docker à l'aide de la commande suivante :

$ sudo systemctl start docker

Vous devriez maintenant pouvoir exécuter les commandes Docker CLI avec succès.

Vous constaterez peut-être que Docker reste à l'état arrêté après le redémarrage de votre machine. Vous pouvez résoudre ce problème en activant le service, permettant à systemd de le démarrer automatiquement :

$ sudo systemctl enable docker $ sudo systemctl daemon-reload

La commande daemon-reload demande à systemd de recharger sa configuration pour appliquer la modification.

2. Démarrer le démon manuellement

Vous pouvez parfois utiliser un système sur lequel le service Docker n'est pas installé. Vous pouvez démarrer manuellement le démon Docker à l'aide de la commande dockerd. Cela doit généralement être exécuté en tant que root.

$ sudo dockerd INFO[2022-06-29T15:12:49.303428726+01:00] Démarrage

Docker restera accessible tant que la commande’ est en cours d'exécution. Utilisez Ctrl+C pour arrêter le démon.

3. Vérifier que la CLI cible le bon démon

Des problèmes peuvent survenir lorsque l'interface de ligne de commande tente de se connecter à une instance de démon Docker distante. C'est généralement la cause lorsque le message d'erreur affiche une adresse TCP :

$ docker run hello-world:latest Impossible de se connecter au démon Docker à tcp:///0.0.0.0:2375

Dans cet exemple, la CLI docker essaie de contacter le démon Docker à 0.0.0.0:2375 en utilisant TCP, au lieu du socket Unix Docker local. Cela échouera si la prise en charge TCP du démon Docker est désactivée ou si l'hôte spécifié est inaccessible sur le réseau.

Vous pouvez généralement résoudre ce problème en basculant vers le contexte Docker CLI correct pour la connexion au démon que vous souhaitez utiliser :

$ docker context use default

Vous pouvez répertorier tous les contextes disponibles et les points de terminaison du démon auxquels ils se connectent avec le commande context ls :

$ docker context ls NOM DESCRIPTION DOCKER ENDPOINT default * Configuration actuelle basée sur DOCKER_HOST unix:///var/run/docker.sock

Le contexte actuellement sélectionné est mis en évidence par un astérisque.

Les valeurs inattendues dans la colonne DOCKER ENDPOINT sont généralement causées par la définition de la variable d'environnement DOCKER_HOST. Vous verrez un avertissement dans ce cas :

$ export DOCKER_HOST=1.2.3.4 $ docker context ls NOM DESCRIPTION DOCKER ENDPOINT default * Configuration actuelle basée sur DOCKER_HOST tcp://1.2.3.4:2375 Avertissement : La variable d'environnement DOCKER_HOST remplace le contexte actif. Pour utiliser un contexte, définissez l'indicateur global –context ou désactivez la variable d'environnement DOCKER_HOST.

La présence de la variable d'environnement DOCKER_HOST dans votre shell remplace le point de terminaison défini par votre contexte sélectionné. Dans cet exemple, les commandes docker cibleront toujours l'instance de démon à tcp://1.2.3.4:2375.

Ce problème peut être résolu en effaçant la variable DOCKER_HOST :

$ export DOCKER_HOST= < p>Docker va maintenant utiliser le point de terminaison configuré par votre contexte actif. Ce sera le socket Unix local par défaut dans /var/run/docker.sock, sauf si vous avez configuré manuellement un contexte personnalisé.

$ docker context ls NOM DESCRIPTION DOCKER ENDPOINT default * Configuration actuelle basée sur DOCKER_HOST unix:///var/run/docker.sock

4. Problèmes d'autorisations

Des autorisations utilisateur incorrectes sur le socket de Docker sont une autre cause fréquente de problèmes de connexion au démon. Ce type de problème affiche généralement un message d'erreur légèrement différent :

$ docker run hello-world:latest Obtenu l'autorisation refusée lors de la tentative de connexion au socket du démon Docker à unix:///var/run/docker.sock < p>Cela se produit lorsque votre compte utilisateur Unix n'est pas autorisé à interagir avec le socket qui expose l'API Docker. L'ajout de vous-même au groupe docker est la meilleure méthode pour résoudre ce problème :

$ sudo usermod -aG docker $USER

Vous devrez ouvrir une nouvelle fenêtre shell ou vous déconnecter et vous reconnecter pour ce changement prenne effet. Vous devriez maintenant pouvoir exécuter des commandes Docker sans rencontrer de problèmes d'autorisations.

Résumé

“Impossible de se connecter au démon Docker” s'affiche lorsque l'interface de ligne de commande Docker ne parvient pas à communiquer avec une instance de démon Docker à l'aide de votre configuration actuelle. Cela est souvent dû au fait que le service démon Docker a été arrêté ou désactivé. Vous pouvez également essayer de vous connecter à un hôte Docker distant qui est hors ligne.

Vous devez maintenant connaître les causes possibles de ce problème et les moyens courants de le résoudre. Résolvez l'erreur en vérifiant les paramètres de votre démon Docker, en redémarrant le service Docker et en vous assurant que votre compte d'utilisateur est autorisé à interagir avec le socket de Docker.

LIRE LA SUITE

  • ” Test de la tablette Amazon Fire 7 (2022) : faible mais bon marché
  • › Pourquoi voulez-vous un Wi-Fi maillé, même si vous n'avez besoin que d'un seul routeur
  • &rsaquo ; Les 5 plus grands mythes sur Android
  • &rsaquo ; 10 excellentes fonctionnalités iPhone que vous devriez utiliser
  • › Examen du chargeur UGREEN Nexode 100 W : plus qu'assez de puissance
  • &rsaquo ; Samsung Galaxy Z Flip 4 a des mises à niveau internes, pas des modifications de conception