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

Je veux faire un mouvement à Docker, donc je viens de commencer à jouer avec elle. J'ai installé Docker sur une installation VirtualBox Ubuntu 15.10 (Wily Werewolf) et comme suggéré ici j'ai ensuite essayé d'exécuter une image docker de base nginx :

$ 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 était en cours d'exécution:

$ 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 que je viens de démarrer le démon Docker 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 alors essayé exécuter à nouveau 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é sudo ' ING la commande, mais en vain. Ce que je fais mal ici?

225
demandé sur Peter Mortensen 2015-11-06 11:06:32

23 réponses

Vous devez ajouter votre utilisateur actuel [supposons que vous êtes connecté en tant qu'ubuntu] pour docker groupe comme suit

sudo usermod -aG docker $(whoami)

Puis déconnexion et connexion à nouveau dans le système ou redémarrez le système. test par docker version

Pour plus d'informations sur l'installation du moteur Docker, suivez la documentation docker

425
répondu Zubair Alam 2016-11-29 17:04:24

Ajoute l'utilisateur au groupe docker

  • Ajoutez le groupe docker s'il n'existe pas déjà:

    sudo groupadd docker

  • Ajoute l'utilisateur connecté "${USER} " au groupe docker:

    sudo gpasswd -a ${USER} docker

  • Redémarrez le démon Docker:

    sudo service docker restart

  • Faites un newgrp docker ou déconnectez - vous/pour activer les modifications à groupe.

134
répondu neo 2016-01-19 06:08:09

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 GitHub , Si vous ne vous êtes pas ajouté dans le groupe docker, faites-le en exécutant:

sudo usermod -aG docker <your-username> 

Et vous êtes probablement prêt à partir.


Comme pour quiconque se heurte à cela, dans le docker de certains OS 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 n'est pas en cours d'exécution en vérifiant l'état de votre service docker 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 alors 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
répondu Jim Fasarakis Hilliard 2015-12-02 13:16:36

Note à self: je reçois l'erreur du titre de la question quand j'oublie d'exécuter la commande docker avec sudo:

sudo docker run ...

[Ubuntu 15.10]

18
répondu Martin Vseticka 2015-12-01 12:18:59

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

ls -l /var/run/docker.sock

Si vous n'êtes pas le propriétaire, Modifiez la propriété avec la commande

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

Ensuite, vous pouvez aller de l'avant et essayer d'exécuter les commandes Docker sans tracas: d

10
répondu kevthanewversi 2016-12-15 12:54:26

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 aussi eu ce problème encore une fois, si la solution ci-dessus ne fonctionne pas, essayez Cette solution {[12] } 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 êtes probablement avec des problèmes de docker réseau, de toute façon cela le résout, pour confirmer cela, voir 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 la prochaine fois que vous redémarrez ( update , 2 mois sans problème à nouveau) votre OS {[10] } obtiendra ce problème à nouveau et s'il s'agit d'un bug ou d'un problème d'installation

MA version 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
répondu deFreitas 2017-05-23 11:47:36

Après avoir installé Docker sur Ubuntu, j'ai exécuté la commande suivante:

sudo service docker start

L'avez-vous essayé?

8
répondu yushulx 2015-11-06 08:12:01

J'ai eu le même problème. J'ai lutté pendant deux jours pour le résoudre.

Cela n'a fonctionné que quand je l'ai fait:

  1. Selon le tutoriel Docker , vous devez ajouter la clé Docker si elle n'est pas déjà ajoutée en utilisant:

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

  2. Ensuite, assurez-vous de vous accorder des privilèges docker en utilisant:

    $ sudo usermod -aG docker $USER

J'espère que cela vous aidera aussi.

6
répondu AmrMohallel 2018-02-20 07:47:07

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 ne fonctionnait que comme root, et aussi avec ceci DOCKER_HOST empty

PS: méfiez-vous également que la façon correcte et officielle d'installer sur Ubuntu est d'utiliser leurs dépôts apt (même sur 15.10), pas avec cette chose" wget".

5
répondu Daniel Loureiro 2015-11-18 17:35:16

Pour OSX:

Après avoir ouvert docker et démarré la machine 'default' via le Terminal Quickstart ( https://docs.docker.com/engine/installation/mac/), vous essayez les commandes docker et obtenez ce message "Impossible de se connecter au démon Docker", Il s'avère que vous avez besoin de variables env définies :

eval "$(docker-machine env default)"

Puis essayer avec docker run hello-world pour voir si tout est peachy.

5
répondu Danny 2016-04-12 07:10:01

Cette question est actuellement numéro 3 sur une recherche Google. Après avoir fait quelques recherches pour résoudre ce problème sur mon système Linux, j'ai pensé que j'écrirais cette réponse. Le message original indique que le problème est sur Ubuntu, mais j'ai également rencontré le problème en utilisant 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 l'installation de Docker:

, Un utilisateur doit être ajouté au menu fixe groupe.

$> sudo usermod -aG docker

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

$> sudo service docker start

, Vous pouvez définir le démon 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
répondu Ronald Weidner 2016-02-24 16:18:20

Pour ceux qui ont déjà essayé de redémarrer votre machine, en désactivant la variable d'environnement DOCKER_HOST comme indiqué dans la documentation Docker env et tout le reste essaie juste d'aller avec le

sudo service docker restart

Seulement cela a fait l'affaire pour moi même après avoir redémarré la machine.

3
répondu Mr.Moe 2016-05-26 08:36:41

Donner un accès non root-à partir de docker

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

$ sudo groupadd docker

Ajoutez l'utilisateur connecté "${USER} " au groupe docker.

Modifiez le nom d'utilisateur pour qu'il corresponde à votre Utilisateur préféré.

Vous devrez peut-être vous déconnecter et vous reconnecter pour ceci pour prendre effet.

$ sudo gpasswd -a ${USER} docker

Redémarrez le démon Docker.

$ sudo service docker restart
3
répondu Eduardo Marín Izquierdo 2016-12-21 19:11:31

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

2
répondu user3737461 2016-04-02 19:49:35

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

, Vous pouvez exécuter des commandes en tant que sudo utilisateur:

sudo docker ***your command here***
2
répondu Dadaso Zanzane 2016-08-08 10:26:58

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

Suivant a travaillé pour moi:

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

Ce qui s'est passé dans les coulisses
systemd a également la possibilité de marquer une unité comme complètement non démarrable, automatiquement ou manuellement, en la reliant à /dev/null. Ceci est appelé masquage de l'unité, et est possible avec la commande mask.

sudo systemctl mask docker.service

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

sudo systemctl list-unit-files

Sortie de sudo systemctl list-unité-fichiers

Pour activer le démarrage Automatique / Manuel du service, vous devez le démasquer en utilisant:

sudo sytemctl unmask docker.service

Maintenant, le service sera activé comme indiqué ci-dessous entrez la description de l'image ici

2
répondu lordzuko 2016-08-25 03:46:06

Comme docker se lie à un socket unix qui appartient à root lors du démarrage, l'utilisation de 'sudo' avec les commandes docker fonctionnera.

1
répondu raja 2016-08-30 06:07:05
  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.chaussette vous pouvez le définir en utilisant "sudo usermod-aG Docker $ USER"
  3. Ensuite, vérifiez votre fichier bash où le docker-client est en cours d'exécution, pour moi c'était sur 0.0.0.0: 2375, alors que Docker-daemon était en cours d'exécution sur le socket unix.(Il a été défini dans le fichier de configuration de dockerd).
  4. commentez simplement la ligne bash et cela fonctionnera fin.
  5. mais si vous voulez le faire fonctionner sur le port TCP au lieu du socket unix, modifiez le fichier de configuration de dockerd et définissez-le sur 0.0.0.0.2375 et gardez la ligne dans bash telle quelle si elle est présente ou définissez-la sur 0.0.0.0: 2375.
1
répondu Nilesh Kande 2016-09-09 07:07:42

J'ai fait face à la même erreur sur L'instance Amazon EC2. Le problème a été corrigé après le redémarrage de l'instance.

0
répondu Sumit Bhoyar 2016-03-31 09:43:27

Ajouter l'utilisateur actuel au groupe docker:

sudo usermod -aG docker $(whoami)

0
répondu BALAJI POTHULA 2016-10-25 11:56:41

Pour Ubuntu 16.04

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

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

Avec:

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

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

DOCKER_OPTS=

Avec:

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

, puis redémarrez votre ordinateur.

0
répondu user6646280 2016-11-25 19:59:53

Peut-être que cela aidera quelqu'un, car le message d'erreur est extrêmement inutile, et j'avais traversé toutes les étapes d'autorisation standard plusieurs fois en vain.

Docker laisse parfois des variables d'environnement ghost en place qui bloquent l'accès, bien que votre système soit correctement configuré. Les commandes shell suivantes peuvent le rendre accessible à nouveau, si vous l'avez fait fonctionner à un moment donné et qu'il a juste cessé de coopérer après un redémarrage:

unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

J'ai eu un ancien docker installer, et après avoir redémarré mon ordinateur portable il a simplement refusé de travailler. A bien été ajouté au panneau de l'utilisateur groupe, avait les autorisations correctes sur le socket, etc, mais ne pouvait toujours pas s'exécuter docker login, docker run ..., etc. Ce fixe pour moi. Malheureusement, je dois l'exécuter à chaque redémarrage. Ceci est mentionné sur quelques problèmes github aussi comme une solution de contournement, bien qu'il semble être un bug que c'est une barrière persistante pour corriger le fonctionnement de Docker (note: je suis sur Arch Linux, pas OSX, mais c'était le même problème pour moi).

0
répondu mopsyd 2018-07-18 21:07:49

Testé dans 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
répondu thiagofalcao 2018-08-10 14:53:04