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?
30 réponses
Linux
les étapes de Post-installation Pour Linux la documentation révèle les étapes suivantes:
- créer le groupe docker .
sudo groupadd docker
- ajouter l'utilisateur au groupe docker .
sudo usermod -aG docker $(whoami)
- déconnectez-vous et ouvrez une nouvelle session pour vous assurer que le docker fonctionne avec les bonnes permissions.
- 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.
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.
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
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.
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.
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
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.
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é.
je redémarre Docker après l'avoir installé:
$ sudo service docker stop
$ sudo service docker start
et ça marche.
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
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
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
où 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...
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
essayez d'ajouter l'utilisateur courant au docker
groupe:
sudo usermod -aG docker $USER
Puis déconnectez-vous et connectez-vous.
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
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.
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)
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
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.
Use Docker ce app
macOS
utilisez la nouvelle Docker Community Edition app pour macOS. Par exemple:
-
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
-
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. -
après avoir lancé l'application, vérifiez l'icône a Docker whale dans le menu status.
- Maintenant, vous devriez être en mesure d'utiliser
docker
,docker-compose
,docker-machine
les commandes comme d'habitude dans la Terminal .
Related:
- Brew installer docker ne comprend pas de support moteur?
- ne peut pas se connecter au démon Docker sur macOS
Linux / Windows
Téléchargez le document à partir de la page de téléchargement et suivez les instructions.
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écutezdocker-machine env default
pour pointer vers un hôte appelédefault
, suivez à l'écran instructions pour compléter la configurationenv
et exécuter la configurationdocker ps
,docker run hello-world
, et ainsi de suite.
- j'ai aussi eu le même problème. Le problème était dans les sockets alloués à docker-daemon et docker-client.
- 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",
- 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).
- commente juste la ligne de bash et ça marchera très bien.
- 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.
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.
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
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.
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
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.
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
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.
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