Docker-Compose no se puede conectar a Docker Daemon


114

Recibo un mensaje de error que dice que no puedo conectarme al demonio de la ventana acoplable. He investigado las respuestas de otras personas que han tenido problemas similares, pero no ha ayudado. Estoy ejecutando la versión de Ubuntu 15.10. Intentaré proporcionar toda la información que tengo.

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.

Versión de 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?

Versión de Docker-Compose

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

Esto es lo que sucede si intento detener o iniciar el servicio ...

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

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

Cualquier ayuda será muy apreciada. Avísame si necesitas más información.


1
Por favor, no destroces tus publicaciones. Una vez que haya publicado una pregunta, habrá obtenido la licencia del contenido para la comunidad de Stack Overflow en general (bajo la licencia CC-by-SA). Si desea desvincular esta publicación de su cuenta, consulte ¿Cuál es la ruta adecuada para una solicitud de desvinculación? .
Bugs

Respuestas:


267

Tuve el mismo error, después de 15 minutos de depuración. Resulta que todo lo que necesita es sudo:) Consulte [Crear un grupo de Docker] aquí https://docs.docker.com/engine/installation/linux/ubuntulinux/ para deshacerse del prefijo sudo.


35
Necesitan un error mejor = / Esta pregunta tiene 13.000 visitas
Jonathan

4
hombre, ahorró alrededor de 30 horas solo para aquellos que votaron a favor y probablemente sea solo el 1% del tiempo que ahorró de hecho
vak

5
la verdadera solución es crear el grupo docker, mientras que sudo, en mi opinión , es solo una solución / truco. Como la parte de creación del grupo no se explica aquí, solo se proporciona un enlace y el contenido de ese enlace cambió, lo considero una respuesta de solo enlace, y ahora es esencialmente inútil (para la parte de reparación real). ¿Podría agregar la descripción de cómo agregar ese grupo?
hoijui

2
Creo que también sudoes una mala idea. Consulte los documentos de Docker para administrar Docker como un usuario no root: docs.docker.com/engine/installation/linux/linux-postinstall/…
jwhitlock

6
Básicamente, todo lo que necesita hacer es sudo usermod -aG docker $USERy funcionará después.
user2340939

65

Tenía este problema y no quería estropear las cosas usando sudo. Al investigar, traté de obtener información:

docker info

Sorprendentemente, tuve el siguiente error:

Se le negó el permiso al intentar conectarse al socket del demonio de Docker en unix: ///var/run/docker.sock: Obtenga http: ///var/run/docker.sock/v1.38/info : dial unix / var /run/docker.sock: connect: permiso denegado

Por alguna razón, no tenía suficientes privilegios, el siguiente comando resolvió mi problema:

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

Et voilà!


¿Qué tal después de reiniciar Docker nuevamente? ¿Tenemos que hacer este chown de nuevo?
Light.G

No, debería funcionar cuando reinicia la ventana acoplable. Pero no estoy seguro de qué sucede si reinicia su máquina.
madjaoue

De forma predeterminada, Docker se mantendría docker.sockcon un grupo no raíz, de dockerforma predeterminada. Pero podríamos cambiar eso por -Gbandera durante el inicio del demonio de Docker. En mi caso, agrego un grupo para $USERNAME, significa agregar un grupo de docker, luego reinicio mi máquina (ubuntu 16.04, PC). Funciona bien. Y esto se recomienda en los documentos de Docker.
Light.G

3
También funciona para mí :)
Kamil J.

27

Parece que su problema fue creado por un antiguo error de Docker, donde el archivo de socket no se volvió a crear después de que Docker fallara. Si este es el problema, cambiar el nombre del archivo de socket debería permitir que se vuelva a crear:

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

Dado que este error se corrigió, la mayoría de las personas que reciben el error Couldn't connect to Docker daemonprobablemente lo están recibiendo porque no están en el dockergrupo y no tienen permisos para leer ese archivo. Correr con sudo docker ...solucionará eso, pero no es una gran solución.

Docker se puede ejecutar como un usuario no root (sin sudo) que tenga los permisos de grupo adecuados. Los documentos posteriores a la instalación de Linux tienen los detalles. La versión corta:

$ 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

Esto permite a los usuarios del dockergrupo ejecutar dockery docker-composecomandos sin él sudo. El propio Docker ejecuta una raíz, lo que permite algunos ataques, por lo que aún debe tener cuidado con los contenedores que ejecuta. Consulte la documentación de seguridad de Docker para obtener más detalles.


Esta pregunta es específica de la instalación de Linux y la solución implica cambios en el sistema host de Linux para solucionarlo. Obtendrá mejor información si publica una pregunta similar con el mismo detalle pero para Windows. Para resolverlo usted mismo, recomiendo una lectura atenta de la documentación de Docker para Windows
jwhitlock

10

Tuve el mismo problema. Luego de tomar notas y analizar algunos resultados de depuración, finalmente, resolví lo que puede ser el mismo error. Inicie el servicio primero,

service docker start

No olvide incluir a su usuario en el grupo de Docker.


Estaba corriendo como root cuando encontré este error. Parecía que lo sudoarregló para los demás -_- Me alegro de descubrir que de hecho fue esto, lo que olvidé hacer. ¡Tan sencillo!
Will el

8

Debería agregar su usuario al grupo "Docker" con algo como:

sudo usermod -aG docker $ {USER}


5

Recibí este error cuando había archivos en el Dockerfiledirectorio a los que el usuario actual no podía acceder. dockerpor lo tanto, no pudo cargar el contexto completo en el demonio y trajo el mensaje " No se pudo conectar al demonio Docker en http + docker: // localunixsocket ".


2
¡Gracias! Esto me lo resolvió. Fácil de comprobar, ya que todos los comandos de la ventana acoplable funcionaron, pero la ventana acoplable-componer no. También docker-compose funcionó en otro directorio. Mensaje de error muy engañoso, por cierto.
Csongor Fagyal

1
Esto realmente debería estar más arriba
Arlen Anderson

1
¡Gracias! trabajó para mi. El uso docker build .producirá problemas de permisos.
Everyman

Lo único que funcionó: ¿por qué los mensajes de error de Docker son tan malos? ¡Gracias!
coderMe

4

Una forma de resolver esto sería agregar primero su usuario al dockergrupo ejecutando lo siguiente

sudo usermod -aG docker $USER

IMPORTANTE: ¡Recuerde cerrar sesión en su sistema (no solo en su terminal) y volver a iniciarla para que esto surta efecto!


sudo usermod -aG docker $ {USER} También deberíamos cerrar sesión e iniciar sesión para aplicar los cambios: su - $ {USER}
user3785966

3

Desde la salida de "ps aux | grep docker", parece que el demonio de la ventana acoplable no se está ejecutando. Intente usar los métodos siguientes para ver qué está mal y por qué no se inicia Docker

  1. Verifique los registros de Docker

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

  1. Intente iniciar Docker en modo de depuración

$ sudo docker -d -D


2

En mi caso, su servicio de Docker podría estar detenido

Comando para iniciar el servicio Docker:

$ sudo systemctl start docker

Comando para verificar si comienza:

$ sudo docker run hello-world


2

Otra razón por la que este error puede aparecer: para mí fue una definición de ruta de imagen mal formada en docker-compose.yml:

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

Primero parece estar bien, pero me había CONTAINER_REGISTRY_BASE=eu.gcr.io/my-project/fijado en el env. Aparentemente, la //ruta de la imagen causó este error.

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

2

solo prueba con sudo. ¡Parece un problema de permiso!

sudo docker-compose -f docker-compose-deps.yml up -d

funcionó para mí.


1

Usé Ubuntu 16.04 y también encontré este problema cuando usé docker-compose. Lo arreglé ejecutando este comando.

$ sudo systemctl start docker
$ sudo docker-compose build

1

¿Existe alguna posibilidad de que haya eliminado la máquina predeterminada? Pero, primero verifique si todos los archivos están allí (OSX, similar en otros sistemas)

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

Además, instale la aplicación Docker, ya que es mucho más fácil mantener los contenedores:

brew cask reinstall docker

ans iniciar la aplicación Docker desde el buscador (espere hasta que el servicio se inicie por completo)

Luego, verifique la instalación con:

docker-machine ls

si no hay máquinas presentes en la lista, cree una e iníciela:

docker-machine create default
docker-machine start default

Después de esto, compilar, componer y todos los demás comandos deberían funcionar correctamente.


1

en mi caso es porque el permiso de ubuntu,

  1. Elemento de lista

verificar el permiso por

docker info 

si imprimen el permiso del problema, ingrese la descripción de la imagen aquí utilice

sudo chmod -R 777 /var/run/docker.sock

0

Para mí, la solución fue instalar una versión más reciente (1.24) del docker-composeuso de este artículo .

La versión anterior (1.17) se instaló desde ubuntuel repositorio predeterminado, pero después de instalar una versión más reciente logré lanzar el contenedor. Espero que ayude a alguien.


0

Creo que es por derecho de acceso, solo tienes que escribir

sudo docker-compose-deps.yml up

-1

En mi caso, tengo el mismo error cuando lo intento docker-compose build y mi solución fue simplemente agregarsudo

sudo docker-compose build

-2

Encontré esto y pareció solucionar mi problema.

GitHub Repara el bloqueo del demonio de Docker

Cambié el contenido de mi archivo docker-compose-deps.yml como se ve en el enlace. Luego corrí docker-compose -f docker-compose-deps.yml up -d. Luego lo cambié de nuevo y funcionó por alguna razón. No tuve que continuar los pasos en el enlace que proporcioné, pero los dos primeros pasos solucionaron el problema.


2
ubuntu 16.04: simplemente agregue sudo: sudo docker-compose up -d
Moccine

No es suficiente como respuesta. Si desea aceptar su propia respuesta, debe indicar la razón fundamental de su problema. De lo contrario, sería un verdadero engaño para los demás. Por cierto, hay otras respuestas aquí, ¿ayudaron? Ya que no vi ningún comentario tuyo.
Light.G
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.