web-dev-qa-db-fra.com

Docker-Compose ne peut pas se connecter au démon Docker

Je reçois un message d'erreur indiquant que je ne peux pas me connecter au démon docker. J'ai examiné les réponses d'autres personnes qui ont eu des problèmes similaires, mais cela n'a pas aidé. J'utilise la version d'Ubuntu 15.10. Je vais essayer de fournir toutes les informations que j'ai.

root@# docker-compose -f docker-compose-deps.yml up -d
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_Host environment variable.

Version Docker

root@# Sudo docker     version
Client:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:20:08 UTC 2015
OS/Arch:      linux/AMD64
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Version Docker-Compose

root@# docker-compose --version
docker-compose version 1.5.2, build 7240ff3

C'est ce qui se passe si j'essaie d'arrêter ou de démarrer le service ...

root@# Sudo service docker stop
stop: Unknown instance: 
root@# Sudo service   docker start
docker start/running, process 5375

Si je lance ps aux | grep docker

root@# ps aux | grep docker
root      4233  0.0  0.0  13692  2204 pts/15   S+   10:27   0:00 grep --color=auto docker

Toute aide serait grandement appréciée. Faites-moi savoir si vous avez besoin de plus d'informations.

71
daveskylark

J'ai trouvé cela et cela a semblé résoudre mon problème.

GitHub Fix Docker Daemon Crash

J'ai changé le contenu de mon fichier docker-compose-deps.yml, comme indiqué dans le lien. Puis j'ai lancé docker-compose -f docker-compose-deps.yml up -d. Puis je l'ai changé et cela a fonctionné pour une raison quelconque. Je n'avais pas à continuer les étapes dans le lien que j'ai fourni, mais les deux premières étapes ont résolu le problème pour moi.

0
daveskylark

J'ai eu la même erreur, après 15 min de débogage. Il s'avère que tout ce dont il a besoin est un Sudo :) Cliquez sur [Créer un groupe Docker] ici https://docs.docker.com/engine/installation/linux/ubuntulinux/ pour obtenir débarrasser du préfixe Sudo.

185
Mahmoud Zalt

Il semble que votre problème ait été créé par un ancien bogue Docker, le fichier de socket n’ayant pas été recréé après la panne de Docker. Si tel est le problème, alors renommer le fichier de socket devrait lui permettre d'être recréé:

$ Sudo service docker stop
$ Sudo mv /var/lib/docker /var/lib/docker.bak
$ Sudo service docker start

Depuis que ce bogue est corrigé, la plupart des gens qui obtiennent l'erreur Couldn't connect to Docker daemon l'obtiennent probablement parce qu'ils ne font pas partie du groupe docker et qu'ils ne sont pas autorisés à lire ce fichier. Courir avec Sudo docker ... résoudra ce problème, mais ce n’est pas une bonne solution.

Docker peut être exécuté en tant qu'utilisateur non root (sans Sudo) disposant des autorisations de groupe appropriées. Le documentation de post-installation Linux contient les détails. La version courte:

$ Sudo groupadd docker
$ Sudo usermod -aG docker $USER
# Log out and log back in again to apply the groups
$ groups  # docker should be in the list of groups for your user
$ docker run hello-world  # Works without Sudo

Cela permet aux utilisateurs du groupe docker d'exécuter les commandes docker et docker-compose sans Sudo. Docker lui-même exécute une racine, autorisant certaines attaques. Vous devez donc rester prudent avec les conteneurs que vous exécutez. Voir Documentation de Docker Security pour plus de détails.

15
jwhitlock

J'ai eu ce problème et je ne voulais pas gâcher les choses en utilisant Sudo. En enquêtant, j'ai essayé d'obtenir des informations:

docker info

De manière surprenante, j'ai eu l'erreur suivante:

Obtention de l'autorisation refusée lors d'une tentative de connexion au socket du démon Docker sous unix: ///var/run/docker.sock: Get http: ///var/run/docker.sock/v1.38/info : composez unix /var/run/docker.sock: connectez-vous: permission refusée

Pour une raison quelconque, je n'avais pas assez de privilèges, la commande suivante a résolu mon problème:

Sudo chown $USER /var/run/docker.sock

Et voilà !

8
madjaoue

J'ai eu le même problème. Après avoir pris des notes et analysé certains résultats de débogage, j'ai finalement résolu ce qui peut être la même erreur. Commencez le service d'abord,

service docker start

N'oubliez pas d'inclure votre utilisateur dans le groupe de menus.

8
R A

J'ai eu cette erreur quand il y avait des fichiers dans le répertoire Dockerfile qui n'étaient pas accessibles par l'utilisateur actuel. docker ne pouvait donc pas télécharger le contexte complet dans le démon et apportait le message "impossible de se connecter au démon Docker à http + docker: // localunixsocket".

4
cweiske

D'après le résultat de "ps aux | grep docker", il semble que le démon docker n'est pas en cours d'exécution. Essayez d’utiliser les méthodes ci-dessous pour voir ce qui ne va pas et pourquoi Docker ne démarre pas

  1. Vérifier les journaux du menu fixe

$ Sudo tail -f /var/log/upstart/docker.log

  1. Essayez de démarrer docker en mode débogage

Sudo docker -d -D

3
Manish R

Une autre raison pour laquelle cette erreur peut apparaître: pour moi, il s’agissait d’une définition de chemin d’image malformée dans le docker-compose.yml:

  service:
    image: ${CONTAINER_REGISTRY_BASE}/my-service
   ...

Lookis ok d'abord, mais j'avais CONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/ réglé sur env. Apparemment, le // dans le chemin de l'image a provoqué cette erreur.

docker-compose: v.1.21.2
docker: 18.03.1-ce
2
leberknecht

Dans mon cas, votre service de docker pourrait être arrêté

Commande pour démarrer le service Docker:

$ Sudo systemctl start docker

Commande pour vérifier si elle démarre:

$ Sudo docker run hello-world

2
John_J

Vous devriez ajouter votre utilisateur au groupe "docker" avec quelque chose comme:

Sudo usermod -aG docker your-user
2
Zhiiker

J'ai utilisé Ubuntu 16.04 et j'ai trouvé ce problème aussi lorsque j'ai utilisé docker-compose. Je l'ai corrigé en exécutant cette commande.

$ Sudo systemctl start docker
$ Sudo docker-compose build
1

Dans mon cas, la même erreur se produit lorsque j'essaie de docker-compose build et que ma solution consiste simplement à ajouter Sudo

Sudo docker-compose build
0
Andrey Suglobov

exécuter ceci en tant que Sudo a résolu le problème pour moi

0
Mohamed Diouane

Est-il possible que vous effaciez la machine par défaut? Mais, vérifiez d’abord si tous les fichiers sont là (OSX, similaire sur d’autres systèmes)

brew install docker docker-compose docker-machine xhyve docker-machine-driver-xhyve
brew link docker docker-compose docker-machine xhyve docker-machine-driver-xhyve

Sudo chown root:wheel /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
Sudo chmod u+s /usr/local/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve

Installez également Docker App, car il est beaucoup plus facile de gérer les conteneurs:

brew cask reinstall docker

et lancez l'application Docker à partir du Finder (attendez que le service soit complètement démarré)

Ensuite, vérifiez l’installation avec:

docker-machine ls

si aucune machine n'est présente dans la liste, créez-en une et démarrez-la:

docker-machine create default
docker-machine start default

Après cela, les commandes de construction, de composition et toutes les autres commandes doivent fonctionner correctement.

0
rapttor