linux - sock - El comando Docker no se puede conectar al demonio Docker
docker linux (23)
Quiero mudarme a Docker, así que acabo de empezar a jugar con eso. He instalado Docker en una instalación de VirtualBox Ubuntu 15.10 (Wily Werewolf) y, como se sugiere aquí , intenté ejecutar una imagen básica de nginx Docker:
$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Así que verifiqué si Docker se estaba ejecutando:
$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
Docs: https://docs.docker.com
Main PID: 7542 (docker)
CGroup: /system.slice/docker.service
└─7542 /usr/bin/docker daemon -H fd://
nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.
Esto sugiere que el demonio Docker ya se está ejecutando, pero para estar seguro, acabo de iniciar el demonio Docker manualmente:
$ sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock
INFO[0000] [graphdriver] using prior storage driver "aufs"
INFO[0000] Firewalld running: false
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address
WARN[0000] Your kernel does not support swap memory limit.
INFO[0000] Loading containers: start.
INFO[0000] Loading containers: done.
INFO[0000] Daemon has completed initialization
INFO[0000] Docker daemon commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0
Luego intenté ejecutar la imagen nuevamente, pero con el mismo resultado:
$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Intenté sudo''ing el comando, pero fue en vano. ¿Qué estoy haciendo mal aquí?
Otorgar acceso no root - desde la docker
Agregue el grupo acoplable si aún no existe.
$ sudo groupadd docker
Agregue el usuario conectado "$ {USER}" al grupo acoplable.
Cambie el nombre de usuario para que coincida con su usuario preferido.
Puede que tenga que cerrar sesión y volver a iniciarla para que esto surta efecto.
$ sudo gpasswd -a ${USER} docker
Reinicia el demonio Docker.
$ sudo service docker restart
- También tuve el mismo problema. El problema estaba en los sockets asignados a docker-daemon y docker-client.
- Primero, no se estableció el permiso para el docker-client en docker.sock. Puede configurarlo usando "sudo usermod -aG docker $ USER"
- 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).
- Solo comente la línea bash y funcionará bien.
- 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.
A medida que Docker se une a un socket Unix que es propiedad de root mientras se inicia, el uso de ''sudo'' junto con los comandos de Docker funcionará.
Agregar usuario actual al grupo acoplable:
sudo usermod -aG docker $(whoami)
Agregue el usuario al grupo acoplable
-
Agregue el grupo acoplable si aún no existe:
sudo groupadd docker
-
Agregue el usuario conectado "$ {USER}" al grupo acoplable:
sudo gpasswd -a ${USER} docker
-
Reinicia el demonio Docker:
sudo service docker restart
-
Haga una
newgrp docker
onewgrp docker
sesión / inicie sesión para activar los cambios en los grupos.
Debe agregar su usuario actual al grupo de acopladores de la siguiente manera:
sudo usermod -aG docker $(whoami)
luego
cierre sesión e inicie sesión nuevamente
en el sistema o reinicie el sistema.
prueba por
docker version
Para obtener más información sobre cómo instalar Docker-Engine, siga la documentación de Docker
Después de instalar Docker en Ubuntu, ejecuté el siguiente comando:
sudo service docker start
¿Lo has probado?
Después de instalar todo e iniciar el servicio, intente cerrar su terminal y ábralo nuevamente, luego intente extraer su imagen
Editar
También tuve este problema nuevamente, si la solución anterior no funciona, intente esta solución que es el siguiente comando
sudo mv /var/lib/docker/network/files/ /tmp/dn-bak
Consideraciones
Si el comando anterior funciona, probablemente tenga problemas con el acoplador de red, de todos modos esto lo resuelve, para confirmar eso, vea el registro con el comando a continuación
tail -5f /var/log/upstart/docker.log
Si la salida tiene algo así
FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints
/var/run/docker.sock is up
Realmente tiene problemas de red, sin embargo, aún no sé si la próxima vez que reinicie ( actualización , 2 meses sin problemas nuevamente) su sistema operativo volverá a tener este problema y si es un error o un problema de instalación
My docker version
Client:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
Server:
Version: 1.9.1
API version: 1.21
Go version: go1.4.2
Git commit: a34a1d5
Built: Fri Nov 20 13:12:04 UTC 2015
OS/Arch: linux/amd64
Esta pregunta es actualmente el número 3 en una búsqueda de Google. Después de investigar un poco para resolver este problema en mi sistema Linux, pensé en escribir esta respuesta. La publicación original indica que el problema está en Ubuntu, pero también experimenté el problema usando Fedora. Con eso en mente, esto es lo que hice para solucionar el problema.
En Fedora 22
Instalación de Docker:
$> curl -fsSL https://get.docker.com/ | sh
Después de instalar Docker:
Se debe agregar un usuario al grupo acoplable.
$> sudo usermod -aG docker
El Docker Daemon necesita ser iniciado
$> sudo service docker start
Puedes configurar el demonio para que comience en el arranque
$> sudo chkconfig docker on
Puede verificar que el servicio Docker se esté ejecutando
$> service docker status
Y un último cheque final
$> docker run hello-world
Intenta usar "sudo" con el comando que estás ejecutando.
Me he enfrentado al mismo error en la instancia de Amazon EC2. El problema se solucionó después de reiniciar la instancia.
Nota personal: me sale el error del título de la pregunta cuando olvido ejecutar el comando
docker
con
sudo
:
sudo docker run ...
[Ubuntu 15.10]
Para OSX :
Después de abrir Docker e iniciar la máquina ''predeterminada'' a través de la Terminal de inicio rápido ( https://docs.docker.com/engine/installation/mac/ ), prueba los comandos de Docker y recibe este mensaje "no se puede conectar al Docker Daemon" , resulta que necesitas establecer algunas variables env :
eval "$(docker-machine env default)"
Luego pruébelo con
docker run hello-world
para ver si todo es color de rosa.
Para Ubuntu 16.04
/lib/systemd/system/docker.service
archivo
/lib/systemd/system/docker.service
:
ExecStart=/usr/bin/dockerd fd://
con:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375
Archivo interno
/etc/init.d/docker
change:
DOCKER_OPTS=
con:
DOCKER_OPTS="-H tcp://0.0.0.0:2375"
y luego reinicie su computadora.
Para aquellos que ya intentaron reiniciar su máquina, desarmar la variable de entorno DOCKER_HOST como se indica en la documentación de docker env y todo lo demás solo intente ir con el
sudo service docker restart
Solo esto me funcionó incluso después de reiniciar la máquina.
Por lo general, el siguiente comando hace el truco:
sudo service docker restart
Esto, en lugar de Docker,
docker start
para los casos en que Docker parece estar ejecutándose.
Si eso funciona, como se sugiere y en otra respuesta y sobre este problema de GitHub , si no se ha agregado al grupo de docker, hágalo ejecutando:
sudo usermod -aG docker <your-username>
Y lo más probable es que estés listo.
En cuanto a que alguien más se encuentre con esto, en la ventana acoplable de algunos sistemas operativos no se inicia inmediatamente después de instalarlo y, como resultado,
can''t connect to daemon message
aparece el mismo
can''t connect to daemon message
.
En este caso, primero puede verificar que Docker no se esté ejecutando verificando el estado de su servicio de Docker ejecutando:
sudo service docker status
Si el resultado se parece a:
docker stop/waiting
lugar de
docker start/running, process 15378
entonces obviamente significa que Docker no está activo.
En este caso, asegúrese de comenzar con:
sudo service docker start
Y, como antes, lo más probable es que estés listo para ir.
Probado en Ubuntu 16.04
# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker
# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e ''[Service]/nExecStart=/nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376'' >> /etc/systemd/system/docker.service.d/override.conf
# restart service
systemctl daemon-reload
service docker restart
Tal vez esto ayude a alguien, ya que el mensaje de error es extremadamente inútil, y he seguido todos los pasos de permiso estándar en numerosas ocasiones sin resultado.
Docker ocasionalmente deja variables de entorno fantasma en su lugar que bloquean el acceso, a pesar de que su sistema esté configurado correctamente. Los siguientes comandos de shell pueden hacer que sea accesible nuevamente, si lo ha ejecutado en un momento y simplemente dejó de cooperar después de un reinicio:
unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps
Tenía una instalación de Docker que funcionaba anteriormente, y después de reiniciar mi computadora portátil, simplemente se negó a funcionar.
Se agregó correctamente al grupo de usuarios de Docker, tenía los permisos correctos en el socket, etc., pero aún no podía ejecutar el
docker login
docker run ...
,
docker run ...
, etc. Esto me lo arregló.
Lamentablemente tengo que ejecutar esto en cada reinicio.
Esto se menciona en un par de problemas de github también
como una solución alternativa, aunque parece un error que esta sea una barrera persistente para corregir el funcionamiento de Docker (nota: estoy en Arch Linux, no en OSX, pero este fue el mismo problema para yo).
Tengo el mismo problema al ejecutar Docker.
puedes ejecutar comandos como sudo user:
sudo docker ***your command here***
Tuve el mismo problema y lo que funcionó para mí fue:
Comprobación de 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 seguir adelante e intentar ejecutar los comandos de Docker sin problemas: D
Yo tuve el mismo problema. He estado luchando durante dos días para resolverlo.
Solo funcionó cuando lo hice:
-
De acuerdo con el Tutorial de Docker , debe agregar la clave Docker si aún no se agregó usando:
$ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -
-
Luego, asegúrese de otorgarse privilegios de docker a usted mismo usando:
$ sudo usermod -aG docker $USER
Espero que esto le ayude también.
ingrese como root (
sudo su
) e intente esto:
unset DOCKER_HOST
docker run --name mynginx1 -P -d nginx
Tengo el mismo problema aquí, y el comando docker solo funcionó ejecutándose como root, y también con este
DOCKER_HOST
vacío
PD: también ten en cuenta que la forma correcta y oficial de instalar en Ubuntu es usar sus repositorios apt (incluso en 15.10), no con esa cosa " wget ".
Para Ubuntu:
Sucedió conmigo cuando actualicé la ventana acoplable.
Debe desenmascarar el servicio y el socket y luego reiniciar el servicio.
Lo siguiente funcionó para mí:
systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service
Lo que pasó detrás de escena
systemd también tiene la capacidad de marcar una unidad como completamente inestable, automática o manualmente, vinculándola a / dev / null.
Esto se llama enmascarar la unidad y es posible con el comando de máscara.
sudo systemctl mask docker.service
Puede consultar la lista de servicios enmascarados utilizando:
sudo systemctl list-unit-files
Para habilitar el inicio automático / manual del servicio, debe desenmascararlo con:
sudo sytemctl unmask docker.service
Ahora el servicio se habilitará como se muestra a continuación