Docker no se puede conectar a Docker Daemon


473

Después de actualizar mi versión de Docker 0.8.0, recibo un mensaje de error al ingresar 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?

Y seguí las instrucciones e ingresé el comando sudo docker -d, y obtuve esto:

[/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

¿Cómo resuelvo el problema?


77
¿Usó sudo cuando ejecutó docker -d?
Ben Whaley

Noto que en el error dice no such file or directory[/var/lib/docker|2462000b]. ¿Existe /var/lib/dockeren su sistema? Si no es así, creo que necesitas reinstalar Docker.
Ben Whaley

3
Tengo el mismo problema (no puedo conectarme a un demonio que 'ps' muestra que todavía se está ejecutando), excepto que no recibo ningún mensaje de 'archivo no encontrado' al iniciar el demonio. / var / lib / docker existe.
Jonathan Hartley

¿Estás usando Docker en un VPS?
pigletfly

Instale el escritorio de Docker desde aquí, lo resolverá. docs.docker.com/docker-for-mac/install
Guy Assaf

Respuestas:


642

Linux

Los pasos posteriores a la instalación para la documentación de Linux revelan los siguientes pasos:

  1. Crea el grupo de acopladores .
    Docker sudo groupadd
  2. Agregue el usuario al grupo acoplable .
    sudo usermod -aG docker $ (whoami)
  3. Cierre y vuelva a iniciar sesión para asegurarse de que Docker se ejecute con los permisos correctos.
  4. Inicia la ventana acoplable.
    inicio de sudo service docker

Mac OS X

Como dice Dayel Ostraco , es necesario agregar variables de entorno:

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

El docker-machine startcomando genera los comentarios para guiar el proceso.


Si. Este fue el problema para mí. Agregué mi usuario al grupo de acopladores y ahora puedo conectarme al demonio. Gracias
Bogdan

FWIW, el enlace a la sección específica es este
asimétrico el

20
Si, por alguna razón, no desea cerrar sesión, puede usar el newgrpcomando para iniciar un nuevo shell en este nuevo grupo. De esta manera: newgrp docker.
Denilson Sá Maia

sudo chown $ USER: $ USER / path / to / docker / binary
Ivor Scott el

No tuve tiempo de reiniciar bash. También lo alias docker='sudo docker'hizo el truco. : p
LovaBill

150

Linux

Para ejecutar docker daemon en Linux (desde CLI ), ejecute:

$ sudo service docker start # Ubuntu/Debian

Nota: Omita el $carácter al copiar y pegar.

En RedHat / CentOS, ejecute: sudo systemctl start docker.

Para inicializar el sistema de archivos "base", ejecute:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

o manualmente como:

$ sudo docker -d --storage-opt dm.basesize=20G

Instalar docker-machineen Linux

Para instalar binarios de máquina en Linux:

  • en la zona:

    install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
    
  • global:

    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'
    

Mac OS

En macOS, el dockerbinario es solo un cliente y no puede usarlo para ejecutar el docker daemon, porque Docker daemon usa características de kernel específicas de Linux, por lo tanto, no puede ejecutar Docker de forma nativa en OS X. Por lo tanto, debe instalar docker-machinepara crear VM y adjuntar a ella.

Instalar docker-machineen macOS

Si aún no tiene el docker-machinecomando, instálelo utilizando uno de los siguientes métodos:

  • Utilizando Brew comando: brew install docker-machine docker.
  • manualmente desde GitHub :

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
    

Consulte: Comience con Docker para Mac .

Configurar docker-machineen macOS

Para iniciar Docker Machine a través de Homebrew, ejecute:

brew services start docker-machine

Para crear una defaultmáquina (si no tiene una, vea:) docker-machine ls:

docker-machine create --driver virtualbox default

Luego configure el entorno para el cliente Docker:

eval "$(docker-machine env default)"

Luego verifique nuevamente enumerando los contenedores:

docker ps

Consulte: Comience con Docker Machine y una máquina virtual local .


Instalar Docker.app en macOS

Alternativamente a la solución anterior, puede instalar una aplicación Docker:

brew cask install docker

Mira esta publicación para más detalles . Consulte también: No se puede conectar al demonio Docker en macOS


1
sudo service docker start funciona con Docker 1.9.1 en Ubuntu 14.04

Gracias. Esto es lo que funcionó para mí en Ubuntu 14.04. todo lo demás falló.
nyxee

Esto es lo único que me funcionó en Mac OSX con hardware anterior a 2010. Tuve que instalar docker-toolboxdesde docs.docker.com/toolbox/toolbox_install_mac
Vikram

2
Necesitaba instalar docker-compose, docker-machine y docker a través de Homebrew, ¡entonces funcionó bien!
Entalpi

Tuve este problema en CentOS 7.6 con Docker 18 sudo rm -rf /var/lib/dockery luego reiniciarlo funcionó. Estaba realmente atrapado y ninguna otra solución funcionó para mí.
Ashkan

142

Si está ejecutando Docker en OS X, ejecutar la siguiente evaluación me ha funcionado.

eval "$(docker-machine env default)"

Si prefiere no tener que ejecutar esta instrucción eval en cada sesión de terminal, puede agregar esto a su bash_profile:

#Docker
eval "$(docker-machine env default)"

Asegúrese de reiniciar la sesión de terminal o ejecutar source bash_profilepara que los cambios surtan efecto.


3
Lo mismo aquí, si intento esto solo, a menudo obtengo Error checking TLS connection: Host is not running... ejecutar esta evaluación después de que el comando docker-machine start defaulthizo el truco.
Emilio Ferrucci

100

Después de una investigación detallada, este problema parece suceder cada vez que se reinicia Mac OS X (o se reinicia la máquina virtual Docker), lo que impide que el cliente Docker se conecte al demonio Docker.

Para resolver el problema, puede:

A) Vuelva a instalar Docker Toolbox utilizando el instalador oficial ( https://www.docker.com/products/docker-toolbox ), o simplemente

B) Ejecute los siguientes comandos en orden:

# 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) Igual que (B), también puede copiar y pegar la siguiente línea para ejecutar los tres comandos:

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

En caso de que obtenga el siguiente error:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

simplemente vuelva a ejecutar los tres comandos otra vez, y debería funcionar la segunda vez.


66
Estoy obteniendo Host no existe: "predeterminado"
Roman Gaufman

@RomanGaufman: ¿esto funciona para usted: docker-machine start default?
KAD

1
@RomanGaufman Tuve que reiniciar mi terminal antes de que el comando se ejecutara con éxito.
anon58192932

¿Se debe a que la ip de vm de virtual box cambia cada vez que reinicia su mac?
Cui Pengfei 崔鹏飞

El error de @ RomanGaufman se resuelve con la respuesta (actualmente) a continuación: stackoverflow.com/a/34887761/634576
Dave Schweisguth

47

Esto generalmente ocurre cuando no estás en el dockergrupo. Puede agregarse al dockergrupo con:

sudo usermod -aG docker yourusername

o

sudo usermod -aG docker $(whoami)

Después de esto, debe cerrar sesión y volver a iniciar sesión en el servidor.

Alternativamente, puede sudocada comando Docker.


55
y si el grupo no existe: sudo groupadd docker
izy

30

Si todas las otras soluciones anteriores no funcionan, puede intentar verificar la propiedad de /var/run/docker.sock:

ls -l /var/run/docker.sock

Si no eres el propietario, cambia la propiedad con el comando:

sudo chown *your-username* /var/run/docker.sock

Luego puede continuar e intentar ejecutar los comandos de Docker sin problemas: D


1
¡He comenzado con esta respuesta, y esto me ayudó!
Andrzej Martyna

2
El problema con este enfoque es que debe repetir este paso cada vez que se reinicia el demonio
MFIhsan

Hola @MFIhsan, un administrador de sistemas inteligente le diría que simplemente cree un script bash de esos comandos y lo agregue a crontab para que se ejecute al reiniciar / iniciar como se explica aquí> stackoverflow.com/a/29247942/3469960
kevthanewversi

¡Un usuario común nunca debería tener un calcetín! Si no posee el calcetín, asegúrese de estar en el grupo de ruedas y el grupo al que pertenece el calcetín ... ¡no el grupo de propietarios de calcetines!
CrazyMerlin

16

La mejor manera de descubrir por qué Docker no funciona es ejecutar el demonio manualmente.

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d

El demonio Docker inicia sesión en STDOUT, por lo que comenzará a escupir lo que sea que esté haciendo.

Aquí estaba cuál era mi problema:

[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid

Esto se debió a que la instancia había sido clonada desde otra máquina virtual. Solo tuve que eliminar el archivo pid, y todo funcionó después.

Por supuesto, en lugar de asumir ciegamente que esto funcionará, sugeriría ejecutar el daemon manualmente una vez más y revisar la salida del registro en busca de cualquier otro error antes de iniciar la copia de seguridad del servicio.


1
Eso también fue lo que me ayudó a encontrar el problema (aunque desafortunadamente vi su respuesta después). El mío era el apparmorpaquete que faltaba .
Pierre de LESPINAY

Esta solución funcionó para mí. Después de eliminar /var/run/docker.pid, finalmente pude iniciar el docker.
jirikadlec2

3
Advertencia: '-d' está en desuso, se eliminará pronto. Ver uso. WARN [0000] utiliza 'docker daemon' en su lugar.
juanmf

3
bandera proporcionada pero no definida: -d
Luís de Sousa

Para ejecutar el Docker Daemon manualmente en las últimas versiones con depuración habilitada, use:dockerd -D
Luis Miguel Serrano

14

Si recibe el mensaje Can't connect to docker daemon. Is 'docker -d' running on this host?, puede verificarlo docker version.

Si ve información como Docker Client se está ejecutando. pero Docker Server no lo es, obviamente es necesario iniciar el servidor Docker.

En CentOS, puede usar servicepara iniciar o detener el servidor Docker.

$ sudo service docker stop
$ sudo service docker start

Luego, después de escribir docker version, obtendrá la información de Docker Client y Docker Server , y se iniciará el demonio Docker.


2
sudo service docker startTambién funcionó para mí en Ubuntu 14.04.
funroll

Cent os 7, tengo que hacerlo cada vez que inicio docker.
Paddy

@ Paddy Debe habilitar el servicio después de indicarlo, y se ejecutará si el sistema se inicia y se mantiene ejecutándose en segundo plano.
CrazyMerlin

Todas estas respuestas que dicen: "Necesita sudo systemctl start docker" siempre asumen que hay un servicio de docker para iniciar. Si hubo algún problema al instalar Docker, es posible que ni siquiera exista un archivo de configuración del servicio, en cuyo caso obtendrá: "Unidad docker.service no cargada"
CrazyMerlin

12

Haz una ps aux | grep dockerpara ver si el demonio se está ejecutando. Si no se ejecuta/etc/init.d/docker start


55
Tengo el mismo problema. 'ps' muestra que mi proceso de docker todavía se está ejecutando.
Jonathan Hartley

detener e iniciar la ventana acoplable (que ya estaba funcionando) me enderezó.
Kyle

14
sudo service docker startme dice "docker start / running, process 4633" y luego me sudo service docker statusdice "docker stop / waiting"
Pierre de LESPINAY

12

Reinicio Docker después de instalarlo:

$ sudo service docker stop
$ sudo service docker start

Y funciona.


9

Tengo un problema similar Tuve que cerrar sesión y volver a iniciar sesión en Shell porque acabo de instalar Docker y el siguiente comando no se mostró en mi entorno.

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc

3
Solo necesitaba cerrar sesión y volver a iniciarla. ¡Todo solucionado!
Mark Shust en M.academy

¡Esto resolvió mi problema! Estoy ejecutando Ubuntu 16.04 como WSL. Lo único que tuve que cambiar fue el número de puerto predeterminado: export DOCKER_HOST = 127.0.0.1: 2375 >> ~ / .bashrc
Alex

9

Me he enfrentado a este problema y reinicié Docker con estos comandos:

$ sudo service docker stop
$ sudo service docker start

Pero no resolví mi problema, porque olvidé ejecutar mis comandos Docker sin él sudo. Para aquellos que enfrentan este problema, intente verificarlo.

Tratar

$ sudo docker info

en lugar de esto:

$ docker info

Este fue exactamente mi problema al intentar ejecutar docker buildUbuntu Xenial.
ashnazg

9

Puedes usar el comando

sudo service docker stop && sudo service docker start

simplemente comenzarlo.


3
O sudo service docker restart, es más fácil 😊
viernes

8

Tengo el mismo error e intento docker-machine regenerate-certso eval..no funcionó para mí.

Esto en OS X 10.11.3 (El Capitan) y Docker v1.10.1. Pude solucionarlo solo eliminando y recreando docker-machine nuevamente.Fuente

Si se está ejecutando docker-machine ls, muestra una salida similar a la siguiente;

ESTIBADOR

Desconocido

ERRORES

No se puede consultar la versión de la ventana acoplable: no se puede conectar al punto final del motor de la ventana acoplable

Intente quitar su máquina Docker con;

docker-machine rm -f default

¿Dónde defaultestá el nombre de su máquina Docker? Entonces;

docker-machine create -d virtualbox default

Crea una nueva máquina Docker.

Verifique que todo parezca normal ahora (sin errores o Docker desconocido) con:

docker-machine ls

Finalmente, no olvide ejecutar "$(docker-machine env default)"antes de continuar o ejecutar el Docker Quickstart Terminal que lo hace por usted ...


6

Tuve el mismo problema: "No se puede conectar a Docker Daemon". (excepto que no recibí ningún error de "archivo no encontrado" al intentar iniciar el servidor).

'ps' mostró que "/ usr / bin / docker -d" todavía se estaba ejecutando

Sin embargo, me di cuenta de que nunca había logrado ejecutar el servidor. Cada intento había producido

...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid

Así que me di cuenta tardíamente de que la instalación de Docker tal vez había registrado el demonio con el advenedizo, lo que lo había iniciado por mí. Por lo tanto, intentar matar al demonio para reiniciarlo manualmente falla (operación no permitida). Entonces hice un

sudo kill -9 <PID>

en el proceso del demonio. Otro demonio inmediatamente tomó su lugar, y este nuevo ahora permite que mi cliente CLI se conecte:

$ 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

6

Intente agregar el usuario actual al dockergrupo:

sudo usermod -aG docker $USER

Luego cierre sesión e inicie sesión.


6

Utilice la aplicación Docker CE

Mac OS

Use la nueva aplicación Docker Community Edition para macOS. Por ejemplo:

  1. Desinstale todos los paquetes de Docker Homebrew que haya instalado hasta ahora:

    brew uninstall docker-compose
    brew uninstall docker-machine
    brew uninstall docker
    
  2. Instale una aplicación manualmente o a través de Homebrew-Cask :

    brew cask install docker
    

    Nota: Esta aplicación va a crear enlaces necesarios a docker, docker-compose, docker-machine, etc.

  3. Después de ejecutar la aplicación, verifique el ícono de una ballena Docker en el menú de estado.

  4. Ahora usted debería ser capaz de utilizar docker, docker-compose, docker-machinecomandos como de costumbre en el terminal .

Relacionado:

Linux / Windows

Descargue Docker CE desde la página de descarga y siga las instrucciones.


Nota 2018-5-20: la aplicación Docker CE en macOS es bastante mala. cada vez que lo abro se congela en el camino, no puedo hacer nada. Traté de
buscar

1
Esta es la respuesta correcta para el problema informado, ¡gracias!
paranza

6

Sabía que ya hay muchas respuestas en esta publicación. Solo me gustaría agregar una respuesta simple que resuelva el problema mencionado anteriormente.

sudo systemctl start docker

Ejecute el comando anterior e iniciará todos los hilos / servicios relacionados con Docker.


5

Acabo de tener el mismo problema, ejecutándome en Amazon AWS .

Esto es lo que intenté:

  • Configurar docker-machinelocalmente con una instancia de AWS ya existente
  • Configuración genérica usada
  • Se conectó un poco, pero como el puerto remoto estaba cerrado, falló
  • Después de eso, el demonio Docker se negó a iniciarse, pero correr dockerdfuncionó ...

Se probó a continuación en la máquina remota:

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success

Eliminé /var/lib/dockery desinstalé todo, pero no hubo éxito después de la reinstalación. Desafortunadamente no tengo registros almacenados de fallas, pero docker.servicesimplemente me negué a comenzar.

Sin embargo, lo que finalmente resolvió mi problema fue básicamente:

sudo usermod -aG docker $(whoami)

4

Siguiente sitio Docker's DOC: Administre Docker como usuario no root

1) Crear grupo de Docker

sudo groupadd docker 

2) Hacer que el usuario pertenezca al grupo acoplable para obtener los privilegios del grupo.

sudo usermod -aG docker $USER

Compruebe si la variable de entorno DOCKER_HOST está configurada para su shell.

env | grep DOCKER_HOST

Si existiera,

unset DOCKER_HOST

Entonces esto debería funcionar:

docker run hello-world

1
usted es un protector de la vida unset DOCKER_HOSTtrabajó para mí
user3014595

4

Si está ejecutando en OS X con la herramienta Docker, siga esto.

Reinicie el demonio y configure su entorno:

docker-machine restart

Y entonces

docker-machine env

Finalmente,

eval $(docker-machine env)

Para probar que el demonio se está ejecutando:

docker ps -ao docker-machine ls. Esto enumerará todos los contenedores.


2

Tengo el mismo problema. En CentOS 6.5:

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

Si muestra que no existe un proceso de Docker Daemon, entonces escribo:

docker -d

Entonces Ctrl+ Dpara detener Docker. Debido a que usamos la -dopción, Docker se ejecutará como demonio. Ahora podemos hacer:

service docker start

Entonces puedo hacer un docker pull centos. Eso es todo.

NOTA: Si esto no funciona, puede intentarlo yum updatey luego repetirlo nuevamente, porque yum installantes de esto.


2

Es posible que el servicio Docker no se esté ejecutando.

Si está en un RedHat / Fedora / CentOS, intente esto:

sudo systemctl start docker

Si estás en Ubuntu / Debian:

sudo service start docker

Docker comenzará a ejecutarse en su host y puerto respectivo.


1

Compruebe si está utilizando Docker Machine :)

Correr docker-machine env defaultdebería hacer el truco.

Porque según la documentación:

Docker Machine es una herramienta que le permite instalar Docker Engine en hosts virtuales y administrar los hosts con docker-machinecomandos. Puede usar la Máquina para crear hosts Docker en su caja local de Mac o Windows, en la red de su empresa, en su centro de datos o en proveedores en la nube como AWS o Digital Ocean.

Con los docker-machinecomandos, puede iniciar, inspeccionar, detener y reiniciar un host administrado, actualizar el cliente Docker y el demonio, y configurar un cliente Docker para hablar con su host.

Apunte la CLI de la máquina a un host administrado en ejecución y podrá ejecutar dockercomandos directamente en ese host. Por ejemplo, ejecute docker-machine env defaulta punto a una serie llamada default, siga las instrucciones que aparecen en pantalla para completar la envinstalación y funcionamiento docker ps, docker run hello-worldy así sucesivamente.

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


1
  1. También tuve el mismo problema. El problema estaba en los sockets asignados a docker-daemon y docker-client.
  2. Primero, no se configuró el permiso para el docker-client en docker.sock. Puede configurarlo usando "sudo usermod -aG docker $ USER"
  3. Luego verifique su archivo bash donde se está ejecutando el docker-client, para mí estaba en 0.0.0.0:2375, mientras que docker-daemon se estaba ejecutando en el socket Unix (se configuró en el archivo de configuración de dockerd).
  4. Solo comente la línea bash y funcionará bien.
  5. Pero si desea que funcione en el puerto TCP en lugar del socket Unix, cambie el archivo de configuración de dockerd y configúrelo en 0.0.0.0.2375 y mantenga la línea en bash como está si está presente o configúrelo en 0.0.0.0: 2375.

1

Para solucionarlo, debe emitir los siguientes comandos en el terminal. Explicaré cada paso:

# 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/*

Ahora, si desea simplificar las cosas y obtener más tiempo, puede ejecutar mi initscript con el parámetro 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

El reinicio es opcional, pero le sugiero que lo haga para asegurarse de que todo funcione sin problemas.


1

Tuve el mismo problema al ejecutar Docker 1.10 en Ubuntu 14.04 y ninguna de las respuestas dadas funcionó. Para mí, la solución fue especificar el controlador de almacenamiento al ejecutar el demonio Docker.

sudo docker daemon --storage-driver=devicemapper

1

Si usa gitlab-ci / gitlab-runners, obtendrá ese error si no tiene permisos de acceso /var/run/docker.sock.

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

Para resolver el problema:

sudo usermod -aG docker gitlab-runner

Verificar con:

sudo -u gitlab-runner -H docker info

Espero que ayude.


0

Si la regeneración de certificados TLS no funciona

docker-machine regenerate-certs default

Intente reiniciar la máquina acoplable y establezca la variable env:

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

Compruebe si la máquina está funcionando con:

docker-machine ls

o alternativamente

docker run hello-world

Esto funcionó para mí. Sin embargo, si aún no tiene el demonio, la página de solución de problemas de Docker detalla un proceso para detener, eliminar y crear una nueva máquina.


0

También recibí el problema "No se puede conectar con el Docker Daemon. ¿Se está ejecutando el Docker Daemon en este host?".

Me había olvidado de usar sudo. Espero que nos ayude a algunos de nosotros.

$: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
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.