Compose: Impossible de se connecter au démon Docker à l'adresse http + unix: //var/run/docker.sock - est-il en cours d'exécution?

Créé le 29 mars 2015  ·  131Commentaires  ·  Source: docker/compose

J'ai tout essayé dans ce fil: https://github.com/docker/compose/issues/88

Toujours pas de chance.

rept<strong i="8">@temponia</strong>:~/passenger$ netstat -ant  |grep 4243
tcp        0      0 127.0.0.1:4243          0.0.0.0:*               LISTEN     
rept<strong i="9">@temponia</strong>:~/passenger$ echo $DOCKER_HOST
tcp://localhost:4243
rept<strong i="10">@temponia</strong>:~/passenger$ sudo docker-compose build db uses an image, skipping
Building web...
Couldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?

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

Voici la version:

rept<strong i="14">@temponia</strong>:~/passenger$ sudo docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a

Des idées? J'ai aussi essayé d'installer fig qui fonctionne tout de suite sans aucun problème ...

Commentaire le plus utile

Soleved pour moi aussi avec la commande sudo

Tous les 131 commentaires

J'obtiens le même message d'erreur lorsque j'exécute docker.
Il est résolu en m'ajoutant au groupe d'utilisateurs 'docker'

Essayez d'exécuter la commande suivante pour vous ajouter au groupe
usermod -aG docker ${USER}

Ou vous pouvez exécuter la commande suivante pour savoir à quels groupes vous appartenez
groups $USER

On dirait que docker-compose ne tient pas compte de la variable $DOCKER_HOST env ici, car il essaie de se connecter au socket au lieu de l'adresse 127.0.0.1.

même problème ici

J'ai rencontré le même message d'erreur tout à l'heure, cette fois-là, le WiFi de mon ordinateur portable est désactivé sans connexion filaire. J'active le WiFi et je me connecte au réseau sans fil domestique, puis le problème est résolu.

Vous pouvez essayer la version 5.0.3 (pré-build) sur https://www.virtualbox.org/wiki/Testbuilds ? Cela résout ce problème pour moi.

J'ai eu ce problème en utilisant docker sur mon mac, mais il a été résolu, j'ai exécuté la commande compose sans sudo, il semble donc que ce soit un problème d'utilisateur,

Soleved pour moi aussi avec la commande sudo

@rept rencontrez-vous toujours ce problème? La version de docker que vous avez signalée a plus d'un an maintenant, ce qui est, bien, préhistorique en termes de docker :)

Je me demande si ce problème devrait rester ouvert car il recueille maintenant toutes sortes de raisons _ possibles_ pour lesquelles le démon ne peut pas être atteint (je ne le dis pas mal; merci à tous d'avoir suggéré des solutions, c'est apprécié)

J'ai fait une nouvelle installation sur une machine complètement différente et ça marche maintenant. Alors vous pouvez le fermer.

Merci, @rept , et

Je reçois

ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

aussi chaque fois que j'active tty: true ou stdin_open: true dans docker-compose.yml et exécute docker-compose up .

Cela peut-il être lié?

Docker version 1.9.1, build a34a1d5
docker-compose version 1.5.2, build 7240ff3

Je viens de résoudre mon problème en exécutant la commande "docker-compose run ..." avec sudo.

Je suis tombé sur cela lors de l'exécution de docker compose up -d pendant le vagabondage. L'utilisateur vagrant a été ajouté au groupe docker mais l'erreur ci-dessus apparaît lors de son exécution sans sudo . Cela fonctionne plus tard si l'on se connecte en tant qu'utilisateur vagrant mais échoue lors de l'approvisionnement, donc cela a quelque chose à voir avec les variables d'env?

docker-compose version: 1.4.1

Solution simple: sudo docker-compose up

J'ai couru au même problème avec:

[root<strong i="6">@c910f05c01bc07</strong> xcat-docker]# docker-compose version
docker-compose version 1.6.2, build 4d72027
docker-py version: 1.7.2
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

version docker:

[root<strong i="10">@c910f05c01bc07</strong> xcat-docker]# docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

C'est une solution de contournement pas une solution, non?

Je suis encore souvent confronté à ça

Ce n'est pas un problème de composition. Si vous ne pouvez pas vous connecter au démon docker à partir de compose, il y a quelques causes probables:

  • vous avez oublié d'exporter les variables DOCKER_ env, ce qui est souvent fait en exécutant eval $(docker-machine env default)
  • il y a un problème de réseau entre vous et l'hôte docker distant (si vous exécutez sur un fournisseur de cloud)
  • il y a un problème avec le démon docker en cours d'exécution dans la VM Virtualbox
  • votre utilisateur n'a pas accès au socket du démon docker à cause des autorisations (si vous utilisez un hôte Linux). La solution consiste à sudo ou à corriger les autorisations.

Ce ne sont pas des problèmes qui peuvent être résolus en composant.

Il y a un problème avec tty , qui est signalé ici: # 3106

Je peux confirmer: il ne s'agit pas d'un problème de composition de docker.

Si cela aide: je suis tombé sur le même problème (impossible de se connecter ...) sur un hôte Ubuntu. Lancer sudo systemctl status docker.service -l montré le "vrai" problème. La solution dans mon cas était de supprimer tous les fichiers dans "/ var / lib / docker / network / files /" et de redémarrer le service docker.

salut @dnephin @madflow , je pense que c'est un problème de composition de docker.

Étant donné qu'avec la même image de docker et le même réseau de docker, le conteneur peut être démarré avec succès avec

 sudo docker run -it --privileged=true  --hostname=xcatmn --name=xcatmn --add-host="xcatmn.clusers.com xcatmn:10.5.107.101" --volume /docker/xcatdata/:/install --net=subnet1 --ip=10.5.107.101  xcat/xcat-ubuntu-x86_64

mais a échoué avec "docker-compose up". Le docker-compose.yml est juste l'équivalent des options et arguments de "docker run":

[root<strong i="12">@c910f05c01bc07</strong> xcat-docker]# docker-compose config
networks:
  default:
    external:
      name: subnet1
    external_name: subnet1
services:
  xcatmn:
    container_name: xcatmn
    extra_hosts:
      xcatmn.clusers.com xcatmn: 10.5.107.101
    hostname: xcatmn
    image: xcat/xcat-ubuntu-x86_64
    networks:
      default:
        ipv4_address: 10.5.107.101
    privileged: true
    stdin_open: true
    tty: true
    volumes:
    - /docker/xcatdata:/install:rw
version: '2.0'
volumes: {}

Le docker et composez les informations de version:

[root<strong i="16">@c910f05c01bc07</strong> xcat-docker]# docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 16:16:33 2016
 OS/Arch:      linux/amd64
[root<strong i="17">@c910f05c01bc07</strong> xcat-docker]# docker-compose version
docker-compose version 1.7.0dev, build 99d68be
docker-py version: 1.8.0-dev
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013

Si vous pouvez reproduire un problème de connexion avec Compose et non avec docker cli, veuillez ouvrir un nouveau problème. Inclure toutes les informations que vous avez ici est excellent, ainsi que le message d'erreur et un lien vers une pâte avec docker-compose --verbose up .

Je reçois ceci si l'un de mes noms de conteneurs a un boîtier de chameau.

$ cat docker-compose.yml
referenceCombo:
  build: referenceCombo

$ docker-compose build
Building referenceCombo
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.

Changez le nom en "referencecombo" (tout en minuscules) et c'est très bien. Le message d'erreur n'aide certainement pas à comprendre celui-ci :(

@chriskessel Je pense que votre problème est couvert par # 2816, c'est un bogue dans Docker Engine.

après le redémarrage des services docker, cela fonctionne pour moi :(

redémarrage du docker de service

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 :)
Consultez [Créer un groupe Docker] ici https://docs.docker.com/engine/installation/linux/ubuntulinux/ pour vous débarrasser du préfixe sudo.

Pourquoi doit-il fonctionner avec sudo?

@fabiopaiva par défaut, le docker se connecte à un socket unix qui est un fichier avec les privilèges de lecture / écriture de l'utilisateur root et du groupe de docker:

$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 Jun 29 23:38 /var/run/docker.sock

vous devez donc être root ou membre du groupe docker pour vous y connecter. Si docker écoutait sur un socket TCP, les autorisations ne s'appliqueraient pas.

Je supprime le fichier /var/run/docker.sock
comment pourrait corriger?

@pixies redémarre le service docker doit le recréer

C'est la bonne réponse. Dans de nombreux cas, vous devrez vous déconnecter et vous reconnecter pour que la modification prenne effet. L'exécution de la commande avec sudo fonctionnera également, mais l'ajout des utilisateurs nécessaires au groupe docker est une meilleure solution afin que vous n'ayez pas à donner l'accès sudo.

leoyuholo a commenté le 14 mai 2015

Il est résolu en m'ajoutant au groupe d'utilisateurs 'docker'

Essayez d'exécuter la commande suivante pour vous ajouter au groupe
usermod -aG docker ${USER}

Ou vous pouvez exécuter la commande suivante pour savoir à quels groupes vous appartenez
groups $USER

il semble vraiment fonctionner si redémarrer une machine.

@alexanderadam avez -vous trouvé une solution? j'ai la même erreur maintenant

@CnytSntrk désolé, j'ai résolu le problème autrement. :clin d'œil:
Mais bonne chance: four_leaf_clover: trouver une solution!

@alexanderadam merci: +1:

Je viens de résoudre mon problème en exécutant la commande "docker-compose run ..." avec sudo.

J'ai résolu le problème en ajoutant sudo

le redémarrage a fait l'affaire pour moi

J'ai également eu le problème après avoir ajouté un utilisateur au groupe docker pour éviter sudo. Le redémarrage a tout résolu! Merci

après l'ajout de l'utilisateur au groupe docker, le redémarrage n'est pas nécessaire, il suffit de se déconnecter et de se connecter, cela fonctionne pour moi

J'ai essayé avant rahman. Ça n'a pas marché. Merci quand même

+1

Ceci est toujours un problème sur Ubuntu 16.04 et m'ajoute au groupe docker, puis la reconnexion a fonctionné. Ce problème ne doit pas être clos.

Ubuntu 16.04
https://github.com/docker/compose/issues/1214#issuecomment -102246925
Fonctionne parfaitement mais redémarrez avant

Ubuntu 16.04 a la même erreur

Solution (de https://docs.docker.com/engine/installation/linux/debian/, ne fonctionne pas uniquement avec Debian):

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

@mikevoets oui je pense que cela devrait résoudre ce problème.

J'ai eu la même chose sur une nouvelle installation et j'ai réalisé que c'était parce que je n'utilisais pas «sudo».

Est-ce que quelqu'un sait comment l'exécuter sans utiliser sudo?

Voir ma réponse Marco

08/11/2016 0:15 GMT + 01: 00 Marco Ordonez [email protected] :

Est-ce que quelqu'un sait comment l'exécuter sans utiliser sudo?

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/docker/compose/issues/1214#issuecomment -258994514,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AEN6D4Gfir0gehnbenS0IT65wLHAo2VWks5q77ERgaJpZM4D2vHs
.

@ mordonez-me, l'ajout dans le groupe docker aidera.

sudo gpasswd -a ${USER} docker

En général, j'ai les étapes d'installation suivantes dans Centos 7 avec root user:

# Remove SELinux for dev VMs
yum remove -y selinux*
# Docker
curl -fsSL https://get.docker.com/ | sh
systemctl enable docker
systemctl restart docker
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` \
  > /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
gpasswd -a vagrant docker

Et après cela, cela fonctionne très bien avec mon utilisateur vagrant non root.

cela n'a fonctionné pour moi qu'après la connexion et la déconnexion après avoir ajouté mon utilisateur au groupe docker.

FWIW, j'avais besoin d'un redémarrage du système avant qu'il ne commence à fonctionner pour moi. Cela était probablement dû au fait que les paquets du noyau linux-image-extra-* ont été récemment installés comme requis par docker sur Ubuntu Xenial . Voir Prérequis par version d'Ubuntu .

Essayez d'abord d'exécuter dockerd ou sudo dockerd si nécessaire pour démarrer le démon. Si vous commencez dockerd avec sudo vous pouvez également lancer docker-compose up avec sudo . sinon ça va.

Depuis que j'ai utilisé certaines des commandes suggérées dans ce fil, je voulais partager mes expériences.

J'ai la configuration suivante dans le Vagrantfile :

config.vm.provision "docker"
config.vm.provision "shell", inline: "docker ps", privileged: false
# or
# config.vm.provision "shell", inline: "docker-compose ps", privileged: false

Je reçois le problème suivant:

  • lorsque j'essaye d'utiliser Docker:

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?
    
  • lorsque j'essaye d'utiliser Docker Compose:

    ==> default: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
    ==> default: 
    ==> default: If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
    

Grâce à ce commentaire, je l'ai fait fonctionner.

Solution:

config.vm.provision "docker"
# The following line terminates all ssh connections. Therefore
# Vagrant will be forced to reconnect.
# That's a workaround to have the docker running with the vagrant user
config.vm.provision "shell", inline:
   "ps aux | grep 'sshd:' | awk '{print $2}' | xargs kill", privileged: true
config.vm.provision "shell", inline: "docker ps", privileged: false

ce n'est pas un problème lié à Docker, mais plutôt un problème d'autorisation de socket linux (problème très courant entre php-fpm et nginx).

1) Docker est une application client / serveur HTTP classique, le client parlera via une socket ou une adresse IP au serveur
2) La socket est un fichier linux, avec permission, elle appartient à un utilisateur et à un groupe:

    sudo ls -alh /var/run
    ...
    srw-rw---- 1 root staff    0 Jan 22 10:09 docker.sock
    ....

3) Lorsque vous faites docker ps , vous devez avoir la permission d'accéder au fichier docker.sock

Dans ce cas, faites simplement sudo usermod -aG staff [ME] pour vous ajouter dans le bon groupe (généralement c'est docker ) (même chose avec php-fpm, où le groupe est généralement www-data).

J'ai eu le problème, que j'ai utilisé pip install docker-compose . Je l'ai désinstallé et utilisé sudo pip install docker-compose . Maintenant, la commande sudo docker-compose up fonctionne.

J'espère que ça t'as aidé.

chaque fois que vous rencontrez des problèmes d'authentification avec une installation de pip, il est préférable d'utiliser pip install [package] —user plutôt que d'utiliser sudo, dans certains cas, l'utilisation de sudo causera des problèmes d'authentification lors de l'exécution de l'application elle-même.

Le 25 janvier 2017, à 17 h 38, oesah [email protected] a écrit:

J'ai eu le problème, que j'ai utilisé pip install docker-compose. Je l'ai désinstallé et utilisé sudo pip install docker-compose. Maintenant, la commande sudo docker-compose up fonctionne.

J'espère que ça t'as aidé.

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub https://github.com/docker/compose/issues/1214#issuecomment-275255529 , ou désactivez le fil de discussion https://github.com/notifications/unsubscribe-auth/AMoEJ_g9iZOd2_BQUgaqgyk2mVIv43a88sv3k2 .

sur Fedora Linux
ajouter votre utilisateur au groupe Docker
sudo usermod -aG docker username

après le redémarrage de cette commande, la déconnexion ne suffit pas comme sur les autres distributions

Rien de mieux que de recommander la doc officielle:

https://docs.docker.com/engine/installation/linux/linux-postinstall/

regarde ça.

Le document officiel est toujours le premier endroit où vous devriez demander de l'aide.

J'ai donc fini par ajouter l'utilisateur au groupe docker:

sudo groupadd docker
sudo usermod -aG docker $USER
sudo service docker restart

J'ai toujours eu des problèmes de connexion lors de l'exécution de docker ps tant qu'utilisateur en me donnant l'erreur suivante:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.27/containers/json: dial unix /var/run/docker.sock: connect: permission denied

Le redémarrage du serveur a résolu ce problème, me permettant d'exécuter des commandes docker en tant qu'utilisateur sans utiliser sudo:

sudo reboot now
... (wait for boot) ...
ssh server
docker ps

ÉDITER:

Il a été mentionné que vous devez simplement vous déconnecter / vous connecter pour que cela soit mis à jour, aucun redémarrage nécessaire pour exécuter les commandes docker sans sudo après l'ajout de l'utilisateur au groupe docker.

l'utilisation de sudo l'a résolu pour moi aussi

Sans déconnexion:

sudo usermod -aG docker $USER
su $USER -

Comme mentionné ci-dessus en effet:

sudo usermod -aG docker $USER

Se déconnecter.
S'identifier.
Terminé.

J'ai eu le même problème et dans mon cas, la cause était que j'avais des fichiers dans le dossier avec Dokcerfile sur lesquels je n'avais aucun droit d'accès. Après avoir exécuté chown tout a commencé à bien fonctionner.
La solution avec usermod ne fonctionne pas pour moi.

METTRE À JOUR
C'est arrivé à nouveau pour moi et cette fois, la solution était de supprimer tous les conteneurs de docker avec:

docker ps -aq | xargs docker rm

C'est en fait un problème d'installation. Veuillez vous référer à la page officielle pour la post-installation. Je résous ce problème à l'aide du document.

Comme @ TrkiSF2 l'a dit ci-dessus. Après avoir ajouté votre utilisateur au groupe Docker, vous devez vous déconnecter et vous reconnecter pour qu'ils prennent effet.

Obtention de l'autorisation refusée lors de la tentative de connexion au socket du démon Docker sous unix: ///var/run/docker.sock: Get http: //%2Fvar%2Frun%2Fdocker.sock/v1.29/containers/json: dial unix /var/run/docker.sock: connect: permission refusée

solution: # chmod -Rf 777 /var/run/docker.sock

Redémarrage résolu après avoir fait

sudo usermod -aG docker $ {USER}

Vous avez ce problème sur les gouttelettes océaniques numériques. La configuration de droplet sur la gestion interne du noyau a résolu ce problème pour moi https://www.digitalocean.com/community/tutorials/how-to-update-a-digitalocean-server-s-kernel#setting -up-the-droplet-for -gestion-du-noyau-interne

J'ai eu ce problème sur un référentiel de code qui se construisait bien un moment, puis pas. J'avais d'autres dépôts sur la même machine et le même compte qui se construisaient très bien, donc ce n'était pas un problème de groupe ou quoi que ce soit avec la configuration du système. Je n'avais aucun ensemble de var d'environnement DOCKER_HOST. Je soupçonne que cette erreur peut être causée par diverses raisons, mais pour moi, cela a fini par être la propriété racine des artefacts de construction dans le répertoire repo. sudo chown -R tous les fichiers du dépôt vers le compte utilisateur ont résolu le problème pour moi.

J'ai personnellement essayé la solution de @cloojure et cela a fonctionné. Mais seulement après m'être ajouté au groupe docker et me reconnecter. La partie reconnexion est essentielle

J'ai rencontré ce même message d'erreur, et tout comme ChrisPappalardo, c'était dû à un problème de permission de fichier et non au démon. sudo chown -R sur les actifs de construction l'a corrigé.

J'obtiens le même message d'erreur lorsque j'exécute "docker-compose build".
J'ai donc ajouté la commande sudo et cela fonctionne bien. ($ sudo docker-compose build)

cela pourrait être une autre solution:
sudo chmod 777 /var/run/docker.sock

@Farada changer les permissions est dangereux; avoir accès à l'API Docker équivaut à avoir un accès root sur votre machine; changer les autorisations en 777 donne à quiconque sur l'hôte un accès root.

L'ajout de votre utilisateur au groupe docker est la solution pour cela, comme mentionné ci-dessus, vous devez redémarrer votre serveur / ordinateur. Merci de ne rien changer au 777!

Si vous avez installé docker à l'aide de la commande sudo, essayez sudo YOUR_COMMAND.

Dans mon cas, Docker a créé des dossiers et des fichiers dans mon dossier de projet chaque fois que j'ai exécuté le conteneur (j'utilise des volumes pour lier toutes les sources, etc.).

Par défaut, une image docker s'exécute avec l'utilisateur root, et c'est ce qui a causé le problème. Chaque fois que j'exécutais des processus de construction dans mon image, les fichiers de sortie auraient des autorisations root:root définies, ce qui se reflète dans mon
système de fichiers.

Il s'avère que cette erreur est générée lorsque Docker ne peut pas accéder à ces fichiers, car lorsque la génération démarre, elle s'exécute en tant qu'utilisateur avec lequel vous avez exécuté la commande. Quand il atteint les répertoires / fichiers avec root:root il se libère et donne une erreur générique ....is it running? alors qu'il doit dire permission denied in X, cannot continue .

Dans mon cas, je viens d'ajouter les fichiers générés par mon image Docker dans .dockerignore et cela a été résolu instantanément.

Donc, fondamentalement, on m'a donné une erreur sans rapport.

Edit Je vois beaucoup de gens utiliser sudo comme soultion. La raison pour laquelle cela fonctionne «par magie» est à cause des problèmes que je décris dans ce commentaire. Lors de l'exécution sous sudo, les autorisations ne sont plus un problème puisque vous exécutez en tant que root. Ce n'est pas une solution!

J'ai eu ceci:

 docker-compose build
db uses an image, skipping
Building web
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.

Le problème était que certains fichiers dans le contexte du Dockerfile avaient des autorisations restrictives, un rapide sudo chown -R damo ./* corrigé.

Cependant, je dirais qu'il y a effectivement un problème avec docker-compose ici - j'aurais dû recevoir un message d'erreur informatif qui spécifie avec précision qu'il a échoué en raison d'une erreur d'autorisations, plutôt qu'une erreur de connexion ambiguë qui était un hareng rouge dans mon cas car je perdais du temps à jouer avec le service de démon docker lui-même.

Je l'ai eu plusieurs fois.

Pour moi, ce n'est pas un problème de configuration. Au lieu de cela, j'ai l'impression que Docker meurt et s'arrête, lors d'un événement, je ne peux toujours pas dire quand cela se produit.

Quoi qu'il en soit, si mon intuition est correcte, le correctif pourrait être sudo service docker restart mais apparemment ce n'est pas suffisant.

Donc, à la fin, la seule solution qui fonctionne est un redémarrage .

Le démon docker se lie à un socket Unix au lieu d'un port TCP. Par défaut, ce socket Unix appartient à l'utilisateur root et les autres utilisateurs ne peuvent y accéder qu'en utilisant sudo. Le démon docker s'exécute toujours en tant qu'utilisateur root. Post-installation Linux

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

rappel: (n'oubliez pas de redémarrer la session ou de redémarrer la VM)

  • En cas de test sur une machine virtuelle, il peut être nécessaire de redémarrer la machine virtuelle pour que les modifications prennent effet.
  • Sur un environnement de bureau Linux tel que X Windows, déconnectez-vous complètement de votre session, puis reconnectez-vous.

J'ai eu le même problème. Comme d'autres l'ont mentionné, lorsque j'ai exécuté le docker-compose avec sudo, cela a fonctionné.

Salut, les gars, j'ai rencontré le même problème lorsque j'utilise Fedora 26, puis j'ai trouvé la solution pour Fedora 25, mais cela fonctionne pour moi.

Voici l'extrait:

$ sudo groupadd docker && sudo gpasswd -a ${USER} docker && sudo systemctl restart docker
$ newgrp docker

REF: https://developer.fedoraproject.org/tools/docker/docker-installation.html

J'espère que cela vous aidera, merci

sudo systemctl status docker.service -l est très utile pour trouver le vrai problème.

J'ai eu la même chose mais seulement avec docker-compose build . Ce n'était finalement qu'un problème de permission de fichier. J'ai créé des fichiers à l'intérieur du conteneur, appartenant à root, et il n'a pas été en mesure de construire avec ces fichiers. J'ai simplement fait un sudo chown -R $USER . et ça marche.

J'avais la même erreur en créant un conteneur mysql après avoir supprimé le précédent.
La raison en était que j'avais un dossier de données (pour la persistance) qui appartenait à l'utilisateur dans le conteneur précédent.
La solution était de supprimer le dossier de données. Attention - vous perdrez vos données. Si vous souhaitez conserver vos données, déplacez peut-être le dossier de données ou attribuez de nouveaux propriétaires.

a fait le truc en m'ajoutant au groupe
usermod -aG docker $ {USER}

redémarrer et fonctionne!

Pour moi, cela a été résolu en vous connectant en mode administrateur: sudo -s

Si cela aide!

J'ai obtenu ce même message d'erreur en utilisant un nom d'image contenant un caractère "+". (Cela est arrivé parce que je nommais mes images après un identifiant de contrôle de version.)

Par exemple, un docker-compose.yaml contenant:

services:
  foobar:
    image: "foobar:a-b+c"
    ....

échoue avec

Building foobar
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.

Mais supprimer le "+" du nom de l'image a bien fonctionné.

@fabiopaiva Je ne sais pas si quelqu'un vous a répondu, mais cela doit d'abord être sudo exclusif car tout utilisateur qui peut exécuter la commande docker peut devenir sudo dans l'hôte .
Toute personne disposant d'un accès d'exécution de docker peut lancer un simple docker lier l'ensemble du système de fichiers hôte et y accéder en tant que root (c'est-à-dire des fichiers shadow pour les mots de passe ou modifier l'autorisation pour l'ensemble du système).
Vous devez donc faire très attention à savoir qui peut utiliser cette commande.

Merci @Gronan , je ne me souviens pas clairement de ce fil.
Mais, en ce qui concerne votre explication, si vous exécutez avec sudo, vous donnez quand même ce contrôle.
Merci pour l'explication

Je n'ai pas besoin de sudo.
Ajoutez votre utilisateur au groupe docker, docker
et redémarrez le service docker, le docker de redémarrage du service ou, systemctl restart docker.service

Aucun redémarrage du système n'est nécessaire.

Ce problème est lié à la façon dont un processus Linux s'exécute sous quel utilisateur et quel groupe et à ce qui se passe lorsque vous modifiez l'appartenance au groupe de processus et comment cela prendra effet.

usermod -aG docker ${USER}
puis _reboot_.

C'est parce que le démon docker s'exécute en tant qu'utilisateur root et docker-compose en tant qu'utilisateur normal

Trois étapes pour y remédier:

  1. sudo groupadd docker
  2. sudo usermod -aG docker $ USER
  3. Redémarrez pour actualiser les modifications.

Plus de détails dans:
https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage -docker-as-a-non-root-user

Au lieu de redémarrer, vous pouvez simplement taper su - ${USER} . Je suppose que cela recharge l'utilisateur actuellement actif dans le terminal.

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04

Cela a fonctionné pour moi sans le redémarrage:

  1. Ajouter un groupe Docker:
    sudo usermod -aG docker ${USER}
  2. Courir
    id
  3. Si le groupe 'docker' n'apparaît pas dans la liste des groupes - déconnectez-vous et reconnectez-vous

Mon problème a finalement été que dans mon contexte de construction de docker, j'avais des fichiers qui n'étaient ni la propriété de mon utilisateur ni de mon groupe. Par exemple, j'ai monté un dossier dans mon contexte de construction de docker dans un conteneur mongo, donc ces fichiers appartenaient à l'utilisateur et au groupe mongodb. Pour résoudre ce problème, j'ai simplement supprimé ce dossier et utilisé à la place un volume généré par docker pour mon service mongodb, puis j'ai pu exécuter docker-compose sans sudo

Je peux confirmer l'observation @alexcdot : il y avait des fichiers dans mon référentiel de projet appartenant à root (je ne sais pas comment ils y sont arrivés). Leur suppression a résolu le problème. Maintenant, je peux exécuter docker-compose sans privilèges sudo.

Confirmation également de la solution @alexcdot et @ tbuss93 . A travaillé pour moi aussi. Je pense que dans ce cas, l'erreur devrait être plus conviviale et afficher idéalement les fichiers problématiques.

J'ai eu ce problème aujourd'hui pour un nouveau notebook Dev. Je l'ai résolu comme ça
1) Arrêtez Docker

sudo service docker stop

si vous regardez cette autorisation de fichier, vous verrez que sans sudo vous ne pourrez pas accéder au démon Docker

sudo ls -la /var/run/docker.sock
srw-rw---- 1 root docker 0 Dec 21 19:16 /var/run/docker.sock

2) Je supprime ce docker.sock

sudo rm  /var/run/docker.sock

merci @rbahumi
3) je lance cette commande

sudo usermod -aG docker ${USER}

et maintenant vous avez presque terminé, déconnectez-vous ou, mieux, redémarrez simplement l'ordinateur, vous n'avez pas à démarrer le service car il démarre automatiquement

@ cooljl31 la suppression du socket semble inutile, car les permissions montrent que les membres du groupe docker ont un accès rw. Vous devrez cependant redémarrer le docker et la session.

Ce correctif, cependant, ne semble pas lié au problème

Cela a résolu mes problèmes: https://docs.docker.com/install/linux/linux-postinstall/#manage -docker-as-a-non-root-user
N'oubliez pas de vous déconnecter et de vous reconnecter. Exécutez les commandes en tant qu'utilisateur que vous souhaitez utiliser docker.

sudo usermod -aG nom d'utilisateur

puis Déconnectez-vous et connectez-vous pour le faire fonctionner.

A fonctionné à merveille pour moi.

J'ai dû également démarrer manuellement le service docker après une nouvelle installation de docker-ce (17.12.0 ~ ce-0 ~ ubuntu) et docker-compose pour faire disparaître le message d'erreur:

sudo service docker start

Suivre les étapes décrites dans la documentation a résolu le problème avec ma nouvelle installation d'Ubuntu 16.04.

J'ai dû redémarrer le système après avoir appliqué ces modifications.

Utilisez la commande: sudo docker-compose up -d

si vous rencontrez:
$ docker-compose up
ERREUR: impossible de se connecter au démon Docker à l'adresse http + docker: // localunixsocket - est-il en cours d'exécution?

S'il se trouve à un emplacement non standard, spécifiez l'URL avec la variable d'environnement DOCKER_HOST.

Vous devriez vérifier si l'utilisateur de connexion actuel appartient au groupe d'utilisateurs /var/run/docker.sock docker .
Essayez d'exécuter Compose en tant que sudo.

Pour résoudre cela sans sudo faites comme @leoyuholo l'a dit dans le deuxième commentaire et déconnectez-vous et reconnectez-vous.

J'obtiens le même message d'erreur lorsque j'exécute docker.
Il est résolu en m'ajoutant au groupe d'utilisateurs 'docker'

Essayez d'exécuter la commande suivante pour vous ajouter au groupe usermod -aG docker $ {USER}

Ou vous pouvez exécuter la commande suivante pour savoir à quels groupes vous appartenez aux groupes $ USER

Après cela, déconnectez-vous et reconnectez-vous et cela fonctionne

lien pour commenter https://github.com/docker/compose/issues/1214#issuecomment -102246925

ps. c'est pour les gens comme moi qui sautent les premiers commentaires -_-

Simplement parce que cela prend beaucoup de temps pour redécouvrir cela, et c'est la première chose que j'ai frappée sur Google. Il n'y a rien de mal avec mes autorisations d'utilisateur sur mon ordinateur portable. Le problème était les autorisations de fichier sur l'un des dossiers montés. Si vous corrigez les autorisations afin que vous n'ayez pas besoin de root pour y accéder, ou si vous les supprimez (dans mon cas, il s'agit d'actifs mis en cache pour les rails), cela réussit.

Le vrai problème est que le message d'erreur ne vous indique pas quel est le problème spécifique lorsque vous générez via docker-compose.

J'ai rencontré le problème aussi. C'est un problème d'accès des utilisateurs.
Je l'ai résolu en installant docker-compose en mode racine et en exécutant docker-compose également en mode racine.

@zjhken ce n'est pas vraiment une solution, mais plutôt une solution de contournement.
Il y a un problème avec les autorisations de fichier dans votre dossier de projet ou vos autorisations de groupe. Voir @alexcdot et mes observations pour le premier cas, et essayez sudo usermod -aG docker <your username> suivi d'une reconnexion pour ce dernier.

@ tbuss93 vous avez raison. J'ai utilisé votre solution pour le résoudre. Ça marche. Cela pourrait être la meilleure solution.

write => info du docker sudo

Ajoutez simplement sudo avant la commande que vous essayez d'exécuter!

Donc, dans mon cas, l'utilisateur gitlab_ci_multi_runner fait partie du groupe docker. Ce n'est donc pas mon problème:

groups $USER
   gitlab_ci_multi_runner : gitlab_ci_multi_runner docker

Mais pour une raison quelconque, je reçois encore PARFOIS (notez que c'est parfois le cas): Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Cela signifie que j'ai l'impression que mon démon plante ou est instable? Ce n'est pas pratique, car j'aimerais avoir une intégration continue stable et fiable en utilisant Docker. Des pensées comment je pourrais déboguer cette instabilité plus loin?

Merci!

Les gens, tout d'abord mes excuses pour mon anglais. J'ai le même problème mais je me rends compte que cela se produit sur konsole à l'intérieur de kde, mais quand je cours dans un terminal crt alt f1 je n'ai pas besoin d'utiliser sudo !. J'ai déjà $ USER sur le groupe docker. J'espère que vous pourrez me comprendre.- merci

Courez;

sudo chown $USER:docker /var/run/docker.sock

J'ai aussi rencontré le problème «Impossible de se connecter au démon Docker sous unix: ///var/run/docker.sock. Le démon docker est-il en cours d'exécution? ' Plus tard, j'ai remarqué ce qui suit.

[ ec2-user @ ip-172-28-6-201 docker-elk] $ qui docker-compose
/ usr / local / bin / docker-compose
[ ec2-user @ ip-172-28-6-201 docker-elk] $ quel docker
/ usr / bin / docker-compose

Puisque le binaire docker-compose se trouve dans / usr / local, j'ai pu exécuter la commande docker-compose sans «sudo». Pour exécuter la commande 'docker', j'avais besoin d'un accès sudo.

J'ai corrigé en utilisant les commandes suivantes.

cp / usr / local / bin / docker-compose / usr / bin / docker-compose
chmod + x / usr / bin / docker-compose
sudo rm / usr / local / bin / docker-compose

Vérifiez maintenant que la commande 'docker-compose' a besoin de 'sudo' pour s'exécuter.
Une fois les étapes ci-dessus exécutées, la commande docker-compose fonctionne pour moi.

après l'ajout d'un utilisateur au groupe Docker
le redémarrage de la machine fera l'affaire.

Pour moi, ça marche.
[ ec2-user @ ip-172-31-7-179 docker-elk] $ sudo docker-compose up -d

Ma version de composition de docker et de docker est.

[ ec2-user @ ip-172-31-7-179 docker-elk] $ sudo docker version
Client:
Version: 17.06.2-ce
Version de l'API: 1.30
Version Go: go1.8.4
Commit Git: 3dfb8343b139d6342acfd9975d7f1068b5b1c3d3
Construit: Ven 10 novembre 00:50:37 2017
OS / Arch: linux / amd64

Serveur:
Version: 17.06.2-ce
Version de l'API: 1.30 (version minimale 1.12)
Version Go: go1.8.4
Commit Git: 402dd4a / 17.06.2-ce
Construit: Ven 10 novembre 00:51:08 2017
OS / Arch: linux / amd64
Expérimental: faux
[ ec2-user @ ip-172-31-7-179 docker-elk] $ sudo docker-compose version
docker-compose version 1.21.2, build a133471
version docker-py: 3.4.0
Version CPython: 2.7.12
Version OpenSSL: OpenSSL 1.0.2k-fips 26 janvier 2017

après avoir suivi la procédure d'ajout d'utilisateur, assurez-vous de redémarrer votre machine.

Je peux produire ce message de manière fiable avec un projet structuré comme ceci:

├── docker-compose.yml
├── Dockerfile
└── volumes

Si 'volumes' dépasse une certaine taille, j'obtiens l'erreur suivante, lors de l'exécution de 'docker-compose build':

  • > ERREUR: Impossible de se connecter au démon Docker à http + docker: // localunixsocket - est-il en cours d'exécution? S'il se trouve à un emplacement non standard, spécifiez l'URL avec la variable d'environnement DOCKER_HOST.

L'exécution de la commande avec sudo commence à créer l'image, mais c'est bien de ne pas avoir à compter sur sudo pour l'automatisation.

Il semble que la cause de ce problème dans mon instance soit la transmission de mon répertoire de volumes dans le contexte de construction . J'imagine une limitation sur les utilisateurs non-sudo pour la taille du contexte de construction? ou timeout?

Donc, dans mon cas, le correctif consiste soit à déplacer le répertoire des volumes, soit à l'ajouter à un .dockerignore, résolvant cette saveur particulière de ce message d'erreur.

cd / var / run
sudo chmod 777 docker.sock
démarrage du menu fixe du service sudo
docker exécuter bonjour le monde
Bonjour de Docker!
Ce message indique que votre installation semble fonctionner correctement.

Résolu le problème :)

résolu avec sudo

Si tout ce qui est dit ici ne fonctionne pas, réinstallez le docker. Cela a fonctionné pour moi.

Pas besoin de redémarrer la machine d'après mon expérience, ce qui est utile si vous êtes dans un environnement de production - après sudo usermod -aG docker $USER , déconnectez-vous et reconnectez-vous. Cela devrait transmettre la nouvelle affectation de groupe d'utilisateurs à tout programme ou application qui en a besoin.

À défaut, la réponse de @praveenbaliga 3 commentaires à partir de mon commentaire fonctionnera à la rigueur si les autorisations étaient incorrectes au départ ou si vous êtes dans un environnement de préparation, mais peuvent enfreindre les politiques de sécurité si vous travaillez dans une production renforcée environnement. Vous voulez vraiment que les membres du groupe root et docker aient accès aux docker.sock et chmod 777 donneront rwx accès

/usr/lib/python2.7/dist-packages/requests/__init__.py:80: RequestsDependencyWarning: urllib3 (1.23) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
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.

J'avais le même problème en cours d'exécution de $ sudo docker-compose . Je suis d'abord devenu root en faisant $ sudo su , puis j'ai exécuté le docker-compose normalement.

utilisez ce lien pour résoudre le problème car cela fonctionne pour moi. J'ai eu le même problème mais maintenant ça marche bien

https://techoverflow.net/2017/03/01/solving-docker-permission-denied- while-trying-to-connect-to-the-docker-daemon-socket/

J'obtiens le même message d'erreur lorsque j'exécute docker.
Il est résolu en m'ajoutant au groupe d'utilisateurs 'docker'

Essayez d'exécuter la commande suivante pour vous ajouter au groupe
usermod -aG docker ${USER}

Ou vous pouvez exécuter la commande suivante pour savoir à quels groupes vous appartenez
groups $USER

Et puis redémarrez votre ordinateur

Ce fil est utile.

Je suis entré dans le même problème. Au contraire, j'ajoute sudo au début de ma ligne de commande et c'est résolu!

Courez;

sudo chown $USER:docker /var/run/docker.sock

Celui-ci a fonctionné pour moi. Je ne sais pas pourquoi l'ajout de $ USER au groupe Docker n'a pas résolu le problème.
Edit: il s'avère que le service docker régénère /var/run/docker.sock chaque fois qu'il se recharge. Vous devez refaire cette astuce à chaque fois que vous redémarrez docker (cela ne se produira pas trop, hein?)

Cette page vous a été utile?
0 / 5 - 0 notes