Docker ne peut pas se connecter à Docker daemon

après avoir mis à jour ma version de Docker en 0.8.0 , je reçois un message d'erreur en entrant sudo docker version :

Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?

et j'ai suivi les instructions et j'ai entré la commande sudo docker -d , et j'ai reçu ceci:

[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory

comment résoudre le problème?

370
demandé sur Peter Mortensen 2014-02-19 09:02:22

30 réponses

Linux

les étapes de Post-installation Pour Linux la documentation révèle les étapes suivantes:

  1. créer le groupe docker .
    sudo groupadd docker
  2. ajouter l'utilisateur au groupe docker .
    sudo usermod -aG docker $(whoami)
  3. déconnectez-vous et ouvrez une nouvelle session pour vous assurer que le docker fonctionne avec les bonnes permissions.
  4. Démarrez docker.
    sudo service docker start

Mac OS X

comme Dayel Ostraco dit est nécessaire pour ajouter des variables d'environnements:

docker-machine start # Start virtual machine for docker
docker-machine env  # It's helps to get environment variables
eval "$(docker-machine env default)" # Set environment variables

la commande docker-machine start affiche les commentaires pour guider le processus.

543
répondu molavec 2018-02-15 18:09:00

si vous utilisez Docker sur OS X, l'exécution de l'évaluation suivante a fonctionné pour moi.

eval "$(docker-machine env default)"

si vous préférez ne pas avoir à exécuter cette instruction d'évaluation sur chaque session de terminal, vous pouvez ajouter ceci à votre bash_profile :

#Docker
eval "$(docker-machine env default)"

assurez-vous de redémarrer la session du terminal ou d'exécuter source sur bash_profile pour que les changements prennent effet.

140
répondu Dayel Ostraco 2017-03-11 16:46:29

Linux

pour exécuter le démon docker sur Linux( à partir de CLI ), exécuter:

$ sudo service docker start # Ubuntu/Debian

Note: sauter le caractère $ lors de la copie et du collage.

sur RedHat/CentOS, exécuter: sudo systemctl start docker .

pour initialiser le système de fichiers "base", Lancez:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

ou à la main comme:

$ sudo docker -d --storage-opt dm.basesize=20G

Installer docker-machine à la Linux

pour installer des binaires machines sur Linux:

  • localement:

    install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
    
  • mondial:

    sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine'
    

macOS

sur macOS le binaire docker n'est qu'un client et vous ne pouvez pas l'utiliser pour exécuter le démon docker, car le démon Docker utilise Vous ne pouvez donc pas exécuter Docker nativement dans OS X. Vous devez donc installer docker-machine pour créer VM et l'attacher.

Installer docker-machine sur macOS

si vous n'avez pas encore la commande docker-machine , installez-la en utilisant l'une des méthodes suivantes:

  • utilisant Brew commande: brew install docker-machine docker .
  • manuellement à partir de GitHub :

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
    

Voir: Get a commencé avec menu fixe pour Mac .

Configurer docker-machine sur macOS

Pour commencer Docker "Machine à 1519820920" via Homebrew, exécutez:

brew services start docker-machine

pour créer une machine default (si vous n'en avez pas, voir: docker-machine ls ):

docker-machine create --driver virtualbox default

puis configurer l'environnement pour le client Docker:

eval "$(docker-machine env default)"

puis double-vérifier en énumérant les conteneurs:

docker ps

Voir: démarrer avec le Panneau de la Machine et un local VM .


Installer Docker.app sur macOS

alternativement à la solution ci-dessus, vous pouvez installer une application Docker par:

brew cask install docker

Cochez cette post pour plus de détails . Voir aussi: ne peut pas se connecter au démon Docker sur macOS

119
répondu kenorb 2018-04-08 16:19:34

après une enquête détaillée, ce problème semble se produire chaque fois que Mac OS X est redémarré (ou que la machine virtuelle Docker est redémarrée) ce qui empêche le client Docker de se connecter au démon Docker.

Pour résoudre le problème, vous pouvez soit:

A) réinstaller la boîte à outils Docker à l'aide de l'installateur officiel ( https://www.docker.com/products/docker-toolbox ), ou simplement

B) exécuter les commandes suivantes dans l'ordre:

# First make sure that the virtual machine is running
docker-machine start default

# Regenerate TLS connection certs, requires confirmation
docker-machine regenerate-certs default

# Finally, set env
eval "$(docker-machine env default)"

C) de même que (B), vous pouvez également copier et coller la ligne suivante pour exécuter toutes les trois commandes:

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

Dans le cas où vous obtenez l'erreur suivante:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

vient de relancer les trois commandes une autre fois, et ça devrait fonctionner la deuxième fois.

100
répondu K.A.D. 2017-03-11 16:52:39

cela se produit habituellement lorsque vous n'êtes pas dans le groupe docker . Vous pouvez vous ajouter au groupe docker avec:

sudo usermod -aG docker yourusername

ou

sudo usermod -aG docker $(whoami)

après cela, vous devez vous déconnecter et vous connecter de nouveau dans le serveur.

alternativement, vous pouvez sudo chaque commande Docker.

37
répondu sony vizio 2018-05-20 14:00:56

si toutes les autres solutions ci-dessus ne fonctionnent pas, vous pouvez essayer de vérifier 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

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

23
répondu kevthanewversi 2017-03-11 17:16:55

la meilleure façon de savoir pourquoi Docker ne fonctionne pas sera d'exécuter le démon manuellement.

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d

le démon Docker se connecte à STDOUT, donc il va commencer à cracher tout ce qu'il fait.

voici ce qu'était mon problème:

[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid

c'était parce que l'instance avait été clonée d'une autre machine virtuelle. J'ai dû retirer le fichier, et tout a fonctionné par la suite.

Bien sûr, au lieu de supposer aveuglément que cela va marcher, je suggérerais d'exécuter le démon manuellement une fois de plus et de passer en revue la sortie log pour toute autre erreur avant de commencer le service de retour.

16
répondu Robert Elwell 2015-01-11 23:26:56

si vous recevez le message Can't connect to docker daemon. Is 'docker -d' running on this host? , vous pouvez le vérifier par docker version .

si vous voyez l'information comme le Client Docker est en cours d'exécution. mais le serveur Docker N'est pas , il est évident que vous devez démarrer le serveur Docker.

dans CentOS, vous pouvez utiliser service pour démarrer ou arrêter le serveur Docker.

$ sudo service docker stop
$ sudo service docker start

ensuite, après avoir tapé docker version , vous obtiendrez les informations de Client Docker et serveur Docker , et le démon Docker a été lancé.

12
répondu Shawn Wang 2017-03-11 17:08:02

je redémarre Docker après l'avoir installé:

$ sudo service docker stop
$ sudo service docker start

et ça marche.

10
répondu Galley 2017-03-11 17:01:49

Faire un ps aux | grep docker pour voir si le démon est en cours d'exécution. Si pas exécuter /etc/init.d/docker start

9
répondu Reza S 2014-02-25 08:39:51

j'ai le même problème. J'ai dû me déconnecter et me connecter de nouveau à shell parce que je viens d'installer Docker et la commande suivante ne s'est pas montrée dans mon environnement.

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc
7
répondu kayn 2014-04-02 14:09:12

j'ai la même erreur et essayer docker-machine regenerate-certs ou eval.. n'a pas fonctionné pour moi.

This on OS X 10.11.3 (El Capitan) and Docker v1.10.1. Je n'ai pu le réparer qu'en supprimant et en recréant docker-machine à nouveau. Source

s'il exécute docker-machine ls , il affiche une sortie similaire à celle ci-dessous;

DOCKER

Inconnu

erreurs

impossible d'interroger la version du docker: impossible connectez - vous à l'extrémité du moteur docker

essayez d'enlever votre Docker avec;

docker-machine rm -f default

default est le nom de votre Docker. Puis:

docker-machine create -d virtualbox default

crée une nouvelle machine Docker.

Double vérifier que tout semble normal maintenant (pas d'erreurs ou Docker inconnu) avec:

docker-machine ls

enfin, n'oubliez pas d'exécuter "$(docker-machine env default)" avant de continuer ou d'exécuter le Terminal Docker Quickstart qui le fait pour vous...

7
répondu mass 2017-03-11 16:56:36

j'ai fait face à ce problème, et J'ai redémarré Docker en utilisant ces commandes:

$ sudo service docker stop
$ sudo service docker start

mais je n'ai pas résolu mon problème, parce que j'ai oublié d'exécuter mes commandes Docker sans sudo . Pour ceux qui font face à ce problème, essayer de vérifier cela.

Essayer

$ sudo docker info

au lieu de ceci:

$ docker info
7
répondu Taha Emara 2017-03-11 17:04:38

essayez d'ajouter l'utilisateur courant au docker groupe:

sudo usermod -aG docker $USER

Puis déconnectez-vous et connectez-vous.

6
répondu dormi330 2017-03-11 17:15:42

j'ai eu le même problème - "ne peut pas se connecter au démon docker."(sauf que je n'ai pas faire "fichier non trouvé" des erreurs en essayant de démarrer le serveur.)

"ps" a montré que"/usr/bin / docker-d "fonctionnait toujours

j'ai réalisé que je n'avais jamais réussi à lancer le serveur moi-même. Chaque tentative avait produit

...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid

donc j'ai tardivement réalisé que l'installation docker avait peut-être enregistré le démon avec upstart, qui avait commencé pour moi. Par conséquent, essayer de tuer le démon pour le redémarrer manuellement échoue (opération non autorisée). Alors j'ai fait un

sudo kill -9 <PID>

sur le procédé daemon. Un autre démon a immédiatement pris sa place, et celui-ci permet maintenant à mon client CLI de se connecter:

$ sudo docker info
Containers: 0
Images: 0
Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 0
WARNING: No memory limit support
WARNING: No swap limit support
5
répondu Jonathan Hartley 2014-03-24 22:08:11

si vous utilisez OS X avec Docker tool, suivez ceci.

redémarrez le démon et configurez votre environnement:

docker-machine restart

et ensuite

docker-machine env

enfin,

eval $(docker-machine env)

pour tester le démon est en cours d'exécution:

docker ps -a ou docker-machine ls . Cette liste énumère tous les conteneurs.

4
répondu Ermias K 2017-03-11 17:02:40

j'ai juste eu le même problème, en cours d'exécution sur Amazon AWS .

voici ce que j'ai tenté:

  • Set-up docker-machine localement avec déjà existant AWS instance
  • Utilisé générique de configuration
  • il sorte de connecté, mais depuis le port à distance a été fermé ,il a échoué
  • après cela, le démon Docker a refusé de démarrer, mais en cours d'exécution dockerd n'travail...

il a été testé suivant sur la machine distante:

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success

j'ai supprimé /var/lib/docker et j'ai tout désinstallé, mais il n'y a pas eu de succès après la réinstallation. Malheureusement, je n'ai pas de logs stockés des échecs, mais docker.service vient de refuser de commencer.

cependant, ce qui a finalement résolu mon problème était essentiellement:

sudo usermod -aG docker $(whoami)
4
répondu Deko 2017-03-11 17:21:54

suit Docker's DOC site: Gérer Docker comme un utilisateur non-root

1) Créer Groupe Docker

sudo groupadd docker 

2) Faire l'utilisateur appartiennent à docker groupe pour le groupe de privilèges.

sudo usermod -aG docker $USER

vérifiez si la variable d'environnement DOCKER_HOST est définie pour votre shell.

env | grep DOCKER_HOST

si elle existe,

unset DOCKER_HOST

alors ça devrait marcher:

docker run hello-world
2
répondu blasrodri 2017-01-13 16:21:32

j'ai eu le même problème. Dans CentOS 6.5:

ps aux |grep `cat /var/run/docker.pid`

S'il n'y a pas de processus de démon Docker, tapez:

docker -d

puis Ctrl + D pour arrêter Docker. Parce que nous utilisons l'option -d , Docker s'exécutera en tant que démon. Maintenant nous pouvons faire:

service docker start

alors je peux faire un docker pull centos . C'est tout.

NOTE: travailler, vous pouvez essayer yum update , et puis répéter ceux-ci, parce que je yum install avant ceux-ci.

2
répondu wuranbo 2017-03-11 16:41:44

Use Docker ce app

macOS

utilisez la nouvelle Docker Community Edition app pour macOS. Par exemple:

  1. désinstallez tous les paquets Docker Homebrew que vous avez installés jusqu'à présent:

    brew uninstall docker-compose
    brew uninstall docker-machine
    brew uninstall docker
    
  2. Installer une application manuellement ou via Homebrew-Cask :

    brew cask install docker
    

    Note: Cette application créera les liens nécessaires vers docker , docker-compose , docker-machine , etc.

  3. après avoir lancé l'application, vérifiez l'icône a Docker whale dans le menu status.

  4. Maintenant, vous devriez être en mesure d'utiliser docker , docker-compose , docker-machine les commandes comme d'habitude dans la Terminal .

Related:

Linux / Windows

Téléchargez le document à partir de la page de téléchargement et suivez les instructions.

2
répondu kenorb 2018-04-08 16:28:54

vérifier si vous utilisez Docker Machine:)

Exécuter docker-machine env default devrait faire l'affaire.

parce que selon la documentation:

Docker Machine est un outil qui vous permet d'installer le moteur Docker sur les hôtes virtuels, et gérer les hôtes avec les commandes docker-machine . Vous peut utiliser la Machine pour créer des hôtes Docker sur votre Mac local ou Windows boîte de, sur le réseau de votre entreprise, dans votre centre de données, ou sur nuage fournisseurs comme AWS ou Digital Ocean.

en utilisant les commandes docker-machine , vous pouvez démarrer, inspecter, arrêter et redémarrer un hôte géré, mettre à niveau le client Docker et le démon, et configurez un client Docker pour parler à votre hôte.

pointer la machine CLI sur une machine en cours d'exécution, gérée, et vous pouvez exécuter docker commande directement sur cet hôte. Par exemple, exécutez docker-machine env default pour pointer vers un hôte appelé default , suivez à l'écran instructions pour compléter la configuration env et exécuter la configuration docker ps , docker run hello-world , et ainsi de suite.

https://docs.docker.com/machine/overview /

1
répondu Bob 2016-02-22 07:37:15
  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, la permission n'a pas été fixée pour le docker-client sur docker.chaussette Vous pouvez définir à l'aide de "sudo usermod -aG docker $UTILISATEUR",
  3. puis vérifiez votre fichier bash où le client-docker est en cours d'exécution, pour moi il était sur 0.0.0.0:2375, alors que docker-daemon était en cours d'exécution sur Unix socket.(Il a été défini dans le fichier de configuration de dockerd).
  4. commente juste la ligne de bash et ça marchera très bien.
  5. mais si vous voulez qu'il fonctionne sur le port TCP au lieu du socket unix, changez le fichier de configuration de dockerd et mettez-le sur 0.0.0.0.2375 et gardez la ligne en bash telle qu'elle est si elle est présente ou mettez-la sur 0.0.0.0:2375.
1
répondu Nilesh Kande 2016-09-09 08:40:56

pour corriger, vous devez émettre les commandes suivantes dans le terminal. Je vais vous expliquer chaque étape:

# Uninstall Docker from apt packages
$ sudo apt-get remove docker docker.io

# Remove it from the libraries just to be
# sure it's gone forever
$ sudo rm -rf /var/lib/docker/*

maintenant, si vous voulez simplifier les choses et obtenir plus de temps, vous pouvez exécuter mon init script avec le paramètre installDocker :

# Pull the init script from GitHub
$ wget https://github.com/dminca/dotfiles/blob/master/init

# Add rights to run the script
$ chmod 755 init

# Just run the script with the installDocker parameter
$ ./init installDocker

Un redémarrage est facultatif, mais je vous suggère de le faire pour être sûr que tout fonctionne normalement.

1
répondu Mincă Daniel Andrei 2017-03-11 16:49:51

j'ai eu le même problème en exécutant Docker 1.10 sur Ubuntu 14.04 et aucune des réponses données n'a fonctionné. Pour moi, la solution était de spécifier le pilote de stockage lors de l'exécution du démon Docker.

sudo docker daemon --storage-driver=devicemapper
1
répondu Yatit Thakker 2017-03-11 17:01:08

si la régénération des certificats TLS ne fonctionne pas

docker-machine regenerate-certs default

essayez de redémarrer la machine docker et de régler la variable env:

docker-machine restart default
eval $(docker-machine env default)

vérifier si la machine fonctionne avec:

docker-machine ls

ou alternativement

docker run hello-world

ça a marché pour moi. Cependant ,si vous n'avez toujours pas le démon en place, page de dépannage de Docker détaille un processus pour arrêter, enlever et créer une nouvelle machine.

0
répondu nikheel 2016-02-26 00:29:59

j'ai aussi eu le problème "Impossible de se connecter au démon Docker. Est-ce que le démon docker tourne sur cet hôte?".

j'avais oublié d'utiliser sudo . J'espère que ça aidera certains d'entre nous.

$:docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

$:sudo docker images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE
0
répondu Habeeb Perwad 2016-12-15 07:14:36

Ok donc j'ai commencé à avoir ce problème aujourd'hui. Ensuite, j'ai vu beaucoup de réponses, mais aucune ne semble avoir fonctionné pour moi. La plupart des instructions étaient dirigées vers linux. Et pour la version mac, ils parlaient tous de faire tourner "docker-machine". Je suppose que vous utilisez docker-machine si vous installez Docker toolbox parce que puis docker sera en cours d'exécution dans une machine virtuelle pour windows et Mac plates-formes. Mais son 2017 maintenant et docker pour mac est vraiment stable donc pas besoin d'utiliser la boîte à outils.

Je ne sais pas comment le démon s'est arrêté. Mais pour le redémarrer tout ce que j'avais à faire était d'Aller "Applications" et de double-cliquer sur l'icône docker. On m'a demandé de mettre à jour et de relancer ce que j'ai accepté. Après ça, tout a fonctionné comme sur des roulettes.

0
répondu ivange94 2017-01-01 18:10:28

essayer de changer le fichier de configuration du Docker, docker ou docker-network dans /etc/sysconfig :

(... ~ v1.17)

docker fichier:

OPTIONS= -H fd://

(ou v1.18):

docker-network fichier:

DOCKER_NETWORK_OPTIONS= -H unix:///var/run/docker.sock
0
répondu user4761977 2017-03-11 16:43:21

avez-vous essayé de l'éteindre encore et encore? :- )

j'ai eu le même problème après la mise à niveau en Docker 1.10.1 sur mon Mac. J'ai fait ce qui suit:

sur le Terminal Docker Quickstart

$ sortie

$ sortie

puis

docker-machine à tuer par défaut

puis redémarré Docker Quickstart Terminal

Cela a résolu mon problème.

0
répondu JackNova 2017-03-11 16:57:24

j'ai eu un problème similaire.

dans mon cas, la solution était de supprimer une version dépréciée de docker. Je suppose que cela a causé des conflits.

sur ubuntu:

sudo apt remove docker

résolu le problème pour moi

0
répondu Erich 2017-07-15 00:07:39