web-dev-qa-db-fra.com

La commande Docker ne peut pas se connecter au démon Docker

Je veux passer à Docker, alors je viens juste de commencer à le gâcher. J'ai installé Docker sur une installation de VirtualBox Ubuntu 15.10 (Wily Werewolf) et comme suggéré ici j'ai ensuite essayé d'exécuter une image de base nginx Docker:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

J'ai donc vérifié si Docker fonctionnait:

$ Sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

Cela suggère que le démon Docker est déjà en cours d'exécution, mais pour être sûr, je viens de le démarrer manuellement:

$ Sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

J'ai ensuite essayé de relancer l'image, mais avec le même résultat:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

J'ai essayé de faire une commande Sudo'ing, mais en vain. Qu'est-ce que je fais mal ici? 

227
kramer65

Vous devez ajouter votre utilisateur actuel [supposez que vous êtes connecté en tant qu'ubuntu] au groupe d'ancrage comme suit

Sudo usermod -aG docker $(whoami)

puis logout & reconnectez-vous dans le système ou redémarrez-le . test by docker version

pour plus d'informations comment installer docker-engine, suivez la documentation de docker

426
Zubair Alam

Ajouter l'utilisateur au groupe de docker

  • Ajoutez le groupe de menu fixe s'il n'existe pas déjà:

    Sudo groupadd docker

  • Ajoutez l'utilisateur connecté "$ {USER}" au groupe de menus fixes:

    Sudo gpasswd -a ${USER} docker

  • Redémarrez le démon Docker:

    Sudo service docker restart

  • Effectuez un newgrp docker ou déconnectez-vous/ouvrez pour activer les modifications apportées aux groupes

135
neo

Habituellement, la commande suivante fait l'affaire:

Sudo service docker restart

Ceci, au lieu de docker start pour les cas où Docker semble déjà être en cours d'exécution. 

Si cela fonctionne alors, comme suggéré et dans une autre réponse et sur ce problème de GitHub , si vous ne vous êtes pas ajouté dans le groupe de docker, exécutez-le en exécutant:

Sudo usermod -aG docker <your-username> 

Et vous êtes probablement prêt à partir.


Pour ce qui est des autres utilisateurs, le menu fixe de certains systèmes d’exploitation ne démarre pas juste après l’avoir installé et, par conséquent, le même can't connect to daemon message apparaît. Dans ce cas, vous pouvez d’abord vérifier que Docker ne fonctionne pas en vérifiant l’état de votre service de menu fixe en exécutant:

Sudo service docker status

Si la sortie ressemble à quelque chose comme: docker stop/waiting au lieu de docker start/running, process 15378, cela signifie évidemment que Docker n'est pas actif. Dans ce cas, assurez-vous de commencer par:

Sudo service docker start

Et, comme avant, vous serez probablement prêt à partir.

31

note à moi-même: je reçois l'erreur du titre de la question lorsque j'oublie d'exécuter la commande docker avec Sudo:

Sudo docker run ...

[Ubuntu 15.10]

18
Martin Vseticka

Avait le même problème et ce qui a fonctionné pour moi était:
Vérification de la propriété de /var/run/docker.sock 

ls -l /var/run/docker.sock

Si vous n'êtes pas le propriétaire, changez de propriétaire avec la commande

Sudo chown *your-username* /var/run/docker.sock

Ensuite, vous pouvez continuer et essayer d’exécuter les commandes du menu fixe sans tracas: D

10
kevthanewversi

Après tout installer et démarrer le service, essayez de fermer votre terminal et ouvrez-le à nouveau, puis essayez de tirer votre image

Modifier

J'ai également eu cette question encore une fois, si la solution ci-dessus ne fonctionne pas, essayez cette solution c'est la commande ci-dessous

Sudo mv /var/lib/docker/network/files/ /tmp/dn-bak

Considérations

Si la commande ci-dessus fonctionne, vous avez probablement des problèmes avec le menu fixe du réseau. Quoi qu'il en soit, cela le résout. Pour le confirmer, consultez le journal avec la commande ci-dessous.

tail -5f /var/log/upstart/docker.log

Si la sortie a quelque chose comme ça

FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints 
/var/run/docker.sock is up

Vous êtes vraiment avec des problèmes de réseau, mais je ne sais pas encore si le prochain redémarrage (update, 2 mois plus aucun problème) votre OS aura ce problème à nouveau et si c'est un problème. bug ou problème d'installation

Ma version de docker

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/AMD64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/AMD64
9
deFreitas

Après avoir installé docker sur Ubuntu, j’ai lancé la commande suivante:

Sudo service docker start

L'as tu essayé?

8
yushulx

J'ai eu le même problème. Cela fait deux jours que nous luttons pour le résoudre.

Cela ne fonctionnait que quand je le faisais:

  1. Selon Tutoriel de Docker , vous devez ajouter la clé Docker si elle n’a pas déjà été ajoutée en utilisant:

    $ Sudo wget -qO- https://get.docker.com/gpg | Sudo apt-key add -

  2. Assurez-vous ensuite de vous accorder les privilèges de docker en utilisant:

    $ Sudo usermod -aG docker $USER

J'espère que ça va t'aider aussi.

6
AmrMohallel

entrez en tant que root (Sudo su) et essayez ceci:

unset DOCKER_Host
docker run --name mynginx1 -P -d nginx

J'ai le même problème ici, et la commande docker n'a fonctionné que sous root, et aussi avec ce DOCKER_Host vide

PS: Méfiez-vous aussi que le moyen correct et officiel d'installer sur Ubuntu consiste à utiliser leurs dépôts apt (même le 15.10), not avec que "wget" chose.

5
Daniel Loureiro

Pour ceux qui ont déjà essayé de redémarrer votre ordinateur, désactivez la variable d’environnement DOCKER_Host comme indiqué dans la documentation docker env

Sudo service docker restart

Ce n’est que cela qui a fonctionné pour moi, même après le redémarrage de la machine.

3
Mr.Moe

Cette question est actuellement le numéro 3 sur une recherche Google. Après avoir fait quelques recherches pour résoudre ce problème sur mon système Linux, je pensais écrire cette réponse. La publication d'origine indique que le problème concerne Ubuntu, mais j'ai également rencontré le problème avec Fedora. Dans cet esprit, voici ce que j'ai fait pour résoudre le problème. 

Sur Fedora 22

Installation de Docker:

$> curl -fsSL https://get.docker.com/ | sh

Après avoir installé Docker:

Un utilisateur doit être ajouté au groupe de menus.

$> Sudo usermod -aG docker

Le démon docker doit être démarré

$> Sudo service docker start

Vous pouvez configurer le démon pour qu'il démarre au démarrage

$> Sudo chkconfig docker on

Vous pouvez vérifier que le service Docker est en cours d'exécution

$> service docker status

Et un dernier contrôle final

$> docker run hello-world
3
Ronald Weidner

Donner un accès non root - à partir de du menu fixe

Ajoutez le groupe de dockers s'il n'existe pas déjà.

$ Sudo groupadd docker

Ajoutez l'utilisateur connecté "$ {USER}" au groupe de menus fixes.

Changez le nom d'utilisateur pour correspondre à votre utilisateur préféré.

Vous devrez peut-être vous déconnecter et vous reconnecter pour que

$ Sudo gpasswd -a ${USER} docker

Redémarrez le démon Docker.

$ Sudo service docker restart
3

Pour Ubuntu:
Est arrivé avec moi lorsque j'ai mis à jour docker.
Vous devez démasquer le service et le socket, puis redémarrer le service.

La suite a fonctionné pour moi:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

Que s'est-il passé dans les coulisses
systemd a également la possibilité de marquer une unité comme complètement imparable, automatiquement ou manuellement, en la liant à/dev/null. Ceci s'appelle masquer l'unité, et est possible avec la commande mask.

Sudo systemctl mask docker.service

Vous pouvez consulter la liste des services masqués en utilisant:

Sudo systemctl list-unit-files

 Output of Sudo systemctl list-unit-files

Pour activer le démarrage automatique/manuel du service, vous devez le démasquer à l'aide de:

Sudo sytemctl unmask docker.service

Maintenant, le service sera activé comme indiqué ci-dessous  enter image description here

2
lordzuko

J'ai le même problème lors de l'exécution de docker.

vous pouvez exécuter des commandes en tant que Sudo user:

Sudo docker ***your command here***
2
Dadaso Zanzane

Essayez d'utiliser "Sudo" avec la commande que vous exécutez. 

2
user3737461

Comme docker se lie à un socket unix qui appartient à root lors du démarrage, utiliser «Sudo» avec les commandes du docker fonctionnera.

1
raja
  1. J'ai aussi eu le même problème. Le problème était dans les sockets alloués à docker-daemon et docker-client.
  2. Tout d'abord, l'autorisation n'a pas été définie pour le client-docker sur docker.sock. Vous pouvez le définir à l'aide de "Sudo usermod -aG docker $ USER"
  3. Ensuite, vérifiez votre fichier bash sur lequel le client docker est en cours d’exécution, pour moi c’était sur 0.0.0.0:2375, alors que docker-daemon s’exécutait sur un socket Unix (défini dans le fichier de configuration de dockerd).
  4. Commentez la bash-line et tout ira bien.
  5. Mais si vous voulez le faire fonctionner sur le port TCP au lieu du socket Unix, changez le fichier de configuration de dockerd et réglez-le sur 0.0.0.0.2375 et conservez la ligne telle quelle si elle est présente ou réglez-la sur 0.0.0.0:2375.
1
Nilesh Kande

J'ai rencontré la même erreur sur l'instance Amazon EC2. Le problème a été résolu après le redémarrage de l'instance.

0
Sumit Bhoyar

Peut-être que cela aidera quelqu'un, car le message d'erreur est extrêmement inutile et que j'avais suivi toutes les étapes d'autorisation standard de nombreuses fois sans résultat.

Docker laisse parfois des variables d'environnement fantôme en place qui bloquent l'accès, même si votre système est configuré correctement. Les commandes suivantes du shell peuvent le rendre à nouveau accessible si vous l'avez exécuté à un moment donné et qu'il cesse de coopérer après un redémarrage:

unset DOCKER_Host
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

J'avais déjà installé un menu fixe et après le redémarrage de mon ordinateur portable, celui-ci a tout simplement refusé de fonctionner. A été correctement ajouté au groupe d'utilisateurs de docker, avait les autorisations appropriées sur le socket, etc., mais ne pouvait toujours pas exécuter docker login, docker run ..., etc. Cela a résolu le problème pour moi. Malheureusement, je dois l'exécuter à chaque redémarrage. Ceci est également mentionné sur quelques problèmes de github / comme solution de contournement, bien que cela puisse sembler être un obstacle qu’il s’agisse d’un obstacle permanent au bon fonctionnement de Docker le même problème pour moi).

0
mopsyd

Testé sous Ubuntu 16.04

# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker

# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf

# restart service
systemctl daemon-reload
service docker restart
0
thiagofalcao

Pour Ubuntu 16.04

Dans le fichier /lib/systemd/system/docker.service change:

ExecStart=/usr/bin/dockerd fd://

avec:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

Dans le fichier /etc/init.d/docker change:

DOCKER_OPTS=

avec:

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

puis redémarrez votre ordinateur.

0
user6646280