web-dev-qa-db-fra.com

Docker ne peut pas se connecter au démon docker

Après avoir mis à jour ma version de Docker vers 0.8.0, un message d'erreur apparaît lorsque je saisis 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 entré la commande Sudo docker -d, et j'ai eu 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?

389
LiJung

Linux

Les étapes de post-installation pour Linux documentation révèlent les étapes suivantes:

  1. Créez le groupe docker.
     Sudo groupadd docker
  2. Ajoutez l'utilisateur au groupe docker.
     Sudo usermod -aG docker $ (whoami)
  3. Déconnectez-vous et reconnectez-vous pour vous assurer que docker fonctionne avec les autorisations appropriées.
  4. Démarrer docker.
     Sudo docker service

Mac OS X

Comme Dayel Ostraco dit qu’il est nécessaire d’ajouter des variables d’environnement:

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 génère les commentaires pour guider le processus.

560
molavec

Si vous utilisez Docker sous OS X, l’évaluation suivante a fonctionné pour moi.

eval "$(docker-machine env default)"

Si vous préférez ne pas avoir à exécuter cette instruction eval 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 de terminal ou d'exécuter la source sur bash_profile pour que les modifications prennent effet.

141
Dayel Ostraco

Après une enquête détaillée, ce problème semble se produire chaque fois après le redémarrage de Mac OS X (ou le redémarrage de la machine virtuelle Docker), 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éinstallez Docker Toolbox à l’aide du programme d’installation officiel ( https://www.docker.com/products/docker-toolbox ), ou tout simplement

B) Exécutez 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) Identique à (B), vous pouvez également copier et coller la ligne suivante pour exécuter les trois commandes:

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

Si 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  :

il suffit de relancer les trois commandes une autre fois, et cela devrait fonctionner la deuxième fois.

100
K.A.D.

Cela se produit généralement lorsque vous ne faites pas partie du 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 reconnecter au serveur.

Sinon, vous pouvez Sudo chaque commande de Docker.

39
nPcomp

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

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

28
kevthanewversi

Le meilleur moyen de savoir pourquoi Docker ne fonctionne pas consiste à 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 enregistre dans STDOUT pour qu'il commence à cracher tout ce qu'il fait.

Voici quel é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

En effet, l'instance avait été clonée à partir d'une autre machine virtuelle. Je devais juste enlever le pidfile, et tout a fonctionné après.

Bien sûr, au lieu de supposer à l'aveuglette que cela fonctionnerait, je suggérerais d'exécuter le démon manuellement une fois de plus et d'examiner la sortie du journal à la recherche d'éventuelles autres erreurs avant de démarrer la sauvegarde du service.

16
Robert Elwell

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 des informations telles que le client Docker est en cours d'exécution. mais Docker Server n’est pas , c’est évidemment 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 Docker Server , et le démon Docker aura été lancé.

12
Shawn Wang

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

$ Sudo service docker stop
$ Sudo service docker start

Et il fonctionne.

10
Galley

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

9
Reza S

J'ai rencontré ce problème et j'ai redémarré Docker à l'aide des commandes suivantes:

$ Sudo service docker stop
$ Sudo service docker start

Mais je n’ai pas résolu mon problème car j’ai oublié d’exécuter mes commandes Docker sans Sudo. Pour ceux qui sont confrontés à ce problème, essayez de vérifier cela.

Essayer

$ Sudo docker info

au lieu de cela:

$ docker info
8
Taha Emara

J'ai le même problème. J'ai dû me déconnecter et me reconnecter à Shell car je viens d'installer Docker et la commande suivante ne s'affiche pas dans mon environnement.

export DOCKER_Host=127.0.0.1:4243 >> ~/.bashrc
7
kayn

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

Ceci sous OS X 10.11.3 (El Capitan) et Docker v1.10.1. Je n'ai pu résoudre le problème qu'en supprimant et en recréant à nouveau docker-machine. La source

Si vous exécutez docker-machine ls, il affiche une sortie similaire à celle ci-dessous;

DOCKER

Inconnu

LES ERREURS

Impossible d’interroger la version du menu fixe: impossible se connecter au noeud final du moteur docker

Essayez de retirer votre machine Docker avec;

docker-machine rm -f default

default est le nom de votre ordinateur Docker. Ensuite;

docker-machine create -d virtualbox default

Crée une nouvelle machine Docker.

Vérifiez à nouveau que tout a l'air normal maintenant (pas d'erreurs ou de Docker inconnu) avec:

docker-machine ls

Enfin, n'oubliez pas de lancer "$(docker-machine env default)" avant de continuer ou de lancer le terminal Docker Quickstart qui le fait pour vous ...

7
Kerem

Essayez d'ajouter l'utilisateur actuel au groupe docker:

Sudo usermod -aG docker $USER

Puis déconnectez-vous et connectez-vous.

6
dormi330

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

"ps" a montré que "/ usr/bin/docker -d" était toujours en cours d'exécution

J'ai réalisé que je n'avais jamais réellement réussi à faire fonctionner 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 réalisé tardivement que l'installation de docker avait peut-être enregistré le démon avec upstart, ce qui l'avait démarré 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 processus de démon. Un autre démon a immédiatement pris sa place, et ce nouveau laisse maintenant mon client CLI 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
Jonathan Hartley

Je viens d'avoir le même problème, fonctionnant sur Amazon AWS .

Voici ce que j'ai essayé:

  • Configurez docker-machine localement avec une instance AWS déjà existante
  • Configuration générique utilisée
  • C'est un peu connecté, mais depuis que le port distant a été fermé, il a échoué
  • Après cela, le démon Docker a refusé de démarrer, mais exécuter dockerd a fonctionné ...

Il a été testé en 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 tout désinstallé, mais la réinstallation a échoué. Malheureusement, je n'ai pas de journaux stockés sur des échecs, mais docker.service a simplement refusé de démarrer.

Cependant, ce qui a finalement résolu mon problème était fondamentalement:

Sudo usermod -aG docker $(whoami)
4
Deko

Si vous utilisez OS X avec l’outil Docker, suivez ceci.

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

docker-machine restart

Et alors

docker-machine env

Finalement,

eval $(docker-machine env)

Pour tester le démon en cours d'exécution:

docker ps -a ou docker-machine ls. Cela listera tous les conteneurs.

4
Ermias K

Je savais qu'il y avait déjà beaucoup de réponses dans ce post. Je voudrais juste ajouter une réponse simple qui résout le problème mentionné ci-dessus.

Sudo systemctl start docker

Exécutez la commande ci-dessus et tous les services/threads liés au menu fixe seront démarrés.

3

Après le site DOC de Docker: Gérer Docker en tant qu'utilisateur non root

1) Créer un groupe de dockers

Sudo groupadd docker 

2) Faites en sorte que l'utilisateur appartienne au groupe de docker pour obtenir les privilèges du groupe.

Sudo usermod -aG docker $USER

Vérifiez si la variable d'environnement DOCKER_Host est définie pour votre shell.

env | grep DOCKER_Host

S'il existe,

unset DOCKER_Host

Alors cela devrait fonctionner: 

docker run hello-world
3
blasrodri

Utiliser Application Docker CE

macOS

Utilisez la nouvelle application Docker Community Edition pour macOS. Par exemple:

  1. Désinstallez tous les packages Docker Homebrew déjà installés:

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

    brew cask install docker
    

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

  3. Après avoir exécuté l'application, consultez l'icône a Docker Whale dans le menu d'état.

  4. Vous devriez maintenant pouvoir utiliser les commandes docker, docker-compose, docker-machine comme d'habitude dans Terminal.

En relation:

Linux/Windows

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

3
kenorb

J'ai le même problème. En CentOS 6.5:

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

Si aucun processus démon Docker n’existe, je tape:

docker -d

Ensuite Ctrl + D arrêter Docker. Comme nous utilisons l'option -d, Docker sera exécuté en tant que démon. Maintenant nous pouvons faire:

service docker start

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

REMARQUE: Si ceux-ci ne fonctionnent pas, vous pouvez essayer yum update, puis les répéter à nouveau, car je yum install avant ceux-ci.

2
wuranbo

Pour résoudre ce problème, vous devez exécuter les commandes suivantes dans le terminal. Je vais 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 gagner du temps, vous pouvez exécuter mon script init 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 vous assurer que tout se passe bien.

1

Le Docker Service peut ne pas être en cours d'exécution.

Si vous utilisez un RedHat/Fedora/CentOS, essayez ceci:

Sudo systemctl start docker

Si vous êtes sur Ubuntu/Debian:

Sudo service start docker

Docker commencera à fonctionner sur votre hôte et votre port respectif.

1
Aamir Meman

J'ai eu le même problème avec Docker 1.10 sous Ubuntu 14.04 et aucune des réponses données ne fonctionnait Pour moi, le correctif consistait à spécifier le pilote de stockage lors de l'exécution du démon Docker.

Sudo docker daemon --storage-driver=devicemapper
1
Yatit Thakker

Vérifiez 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 Docker Engine sur hôtes virtuels et gérer les hôtes avec les commandes docker-machine. Vous pouvez utiliser Machine pour créer des hôtes Docker sur votre Mac ou Windows local Box, sur le réseau de votre entreprise, dans votre centre de données ou sur le cloud des fournisseurs comme AWS ou Digital Ocean.

À l'aide des commandes docker-machine, vous pouvez démarrer, inspecter, arrêter et redémarrez un hôte géré, mettez à niveau le client et le démon Docker, et configurer un client Docker pour parler à votre hôte.

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

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

1
Bob
  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

Vous pouvez utiliser la commande

Sudo service docker stop
Sudo service docker start

simplement le démarrer.

0
kvadityaaz

J'ai également eu le problème "Impossible de se connecter au démon Docker. Le démon docker est-il exécuté sur cet hôte?".

J'avais oublié d'utiliser Sudo. J'espère que cela 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
Habeeb Perwad

Ok, j'ai donc commencé à avoir ce problème aujourd'hui. Ensuite, j'ai vu beaucoup de réponses mais aucune ne semble avoir fonctionné pour moi. D'abord, la plupart des instructions étaient dirigées vers Linux. Et pour la version mac, ils parlaient tous de lancer «docker-machine». Je suppose que vous utilisez docker-machine si vous installez docker toolbox, car docker sera exécuté sur une machine virtuelle pour les plates-formes Windows et Mac. Mais son 2017 maintenant et docker pour mac est vraiment stable donc pas besoin d'utiliser la boîte à outils.

Vous ne savez pas comment le démon s'est arrêté. Mais pour le redémarrer, tout ce que je devais faire était d'aller dans "Applications" et double-cliquer sur l'icône du menu fixe. On m'a demandé de mettre à jour et relancé que j'ai accepté. Après cela, tout a fonctionné comme un charme.

0
ivange94

Essayez de modifier le fichier de configuration de Docker, docker ou docker-network dans /etc/sysconfig:

(... ~ v1.17)

fichier docker:

OPTIONS= -H fd://

ou (v1.18):

docker-network fichier:

DOCKER_NETWORK_OPTIONS= -H unix:///var/run/docker.sock
0
user4761977

Si la régénération de certificats TLS ne fonctionne pas

docker-machine regenerate-certs default

Essayez de redémarrer l’ordinateur de base et de définir la variable env:

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

Vérifiez si la machine fonctionne avec:

docker-machine ls

ou bien 

docker run hello-world

Cela a fonctionné pour moi. Cependant, si le démon n'est toujours pas activé, La page de dépannage de Docker détaille un processus d'arrêt, de suppression et de création d'un nouvel ordinateur. 

0
nikheel

J'ai eu un problème similaire. 

Dans mon cas, la solution consistait à supprimer une version obsolète de docker. Je suppose que cela a provoqué des conflits.

Sur Ubuntu:

Sudo apt remove docker

résolu le problème pour moi

0
Erich

vous pouvez exécuter le démon avec la commande suivante:

Sudo Nohup docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock &

Le script laisse le démon actif en arrière-plan et, lorsque Docker est prêt, vous pouvez vérifier qu'il accepte les commandes.

Sudo docker info

pour plus d'informations, consultez ceci: https://www.upcloud.com/support/how-to-configure-docker-swarm/

0

Je suis surpris que personne n'ait déjà répondu à cela:

Sudo docker network create persistence_backend

Faites ceci si vos deux dockers en cours d’exécution et docker

0
PauAI

Avez-vous essayé de l'éteindre et rallumer? :-)

J'ai eu le même problème après la mise à niveau vers Docker 1.10.1 sur mon Mac .

Sur le terminal Docker Quickstart

$ exit

$ exit

puis

tuer docker-machine par défaut

puis redémarré Docker Quickstart Terminal

Cela a résolu mon problème.

0
JackNova

Sur Mac OS-X, cela pourrait simplement signifier que l’installation de docker est obsolète ou ne fonctionne pas. Téléchargez simplement le dernier menu fixe à partir du site officiel et installez-le.

Travaillé pour moi.

0
SmallChess

Si vous utilisez gitlab-ci/gitlab-runners, vous obtenez cette erreur si vous ne disposez pas des autorisations nécessaires pour accéder à /var/run/docker.sock.

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

Résoudre le problème:

Sudo usermod -aG docker gitlab-runner

Vérifiez avec:

Sudo -u gitlab-runner -H docker info

J'espère que cela pourra aider.

0
Tobias Ernst