Saltar al contenido

¿Por qué aparece el mensaje “No se puede conectar al demonio de Docker” cuando el demonio se está ejecutando?

Solución:

Esta pregunta ya ha sido respondida, pero aquí hay una información adicional.

No importa si está en Arch u otra distribución como Fedora o Ubuntu, Docker usa un archivo de socket para comunicarse. Cuando corres docker comandos, usa este socket para hablar con el demonio de Docker. Por supuesto, el demonio debe estar ejecutándose (y a menudo está deshabilitado de manera predeterminada), pero si su usuario no puede acceder al socket, tampoco podrá comunicarse con el demonio.

Primero instalaría Docker desde el repositorio de la distribución. Algunas personas descargan un script de instalación y lo canalizan a un shell (curl ... | sh), pero se recomienda instalarlo desde el repositorio para que se pueda actualizar fácilmente.

Arco:

# pacman -S docker

Fedora:

# dnf install docker

Como se mencionó anteriormente, el demonio puede estar deshabilitado de forma predeterminada. Si desea utilizar Docker, el demonio debe estar ejecutándose.

Habilítelo (para que se inicie al arrancar):

# systemctl enable docker

Inícielo ahora (o reinicie):

# systemctl start docker

Ahora, de forma predeterminada (si falta el grupo de Docker), el socket de Docker es propiedad de root:

# ls -la /var/run/docker.sock
srw-rw---- 1 root root 0 Apr 28 17:22 /var/run/docker.sock

Esta es la razón por la que un usuario normal no puede hablar con el demonio de la ventana acoplable. Un usuario normal no tiene permisos suficientes para acceder al socket. No puede alcanzar el demonio, por lo que asume que no se está ejecutando y muestra este error: Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Esta es la razón por la que muchas personas simplemente inician todos los comandos de Docker como root, usando sudo. Pero como se describe en la otra respuesta, Docker tiene su propio mecanismo para eso, por lo que no es necesario usar sudo.

Idealmente, un grupo llamado docker se crea al instalar Docker. Sin embargo, si ese grupo no existe cuando se inicia el demonio, el archivo de socket es propiedad de root.

En algunos casos, ese grupo solía tener un nombre diferente, como dockerroot en Fedora. Cheque grep docker /etc/group para ver si existe un grupo de este tipo en su sistema. Si ya está usando ese grupo (su usuario está en él), deberá configurar Docker para usarlo:

En /etc/sysconfig/docker, agregar -G dockerroot (nota: es una solución alternativa, no la mejor solución):

OPTIONS='--selinux-enabled -G dockerroot'

Después de reiniciar el demonio, su usuario podrá acceder al socket:

# systemctl restart docker
# ls -la /var/run/docker.sock
srw-rw---- 1 root dockerroot 0 Apr 28 17:32 /var/run/docker.sock

De lo contrario, la forma oficial sería utilizar el grupo llamado docker. Si existe, Docker lo usará automáticamente, es decir, establecerá el grupo del socket en ese grupo. Si no existe, todo lo que necesita hacer es crearlo y reiniciar el demonio:

# groupadd docker
# systemctl restart docker

El archivo de socket será propiedad de ese grupo:

# srw-rw---- 1 root docker 0 Apr 28 17:42 /var/run/docker.sock

Su usuario debe estar en el docker grupo para poder acceder al socket:

# usermod -aG docker (user)

Puede que tenga que cerrar la sesión y volver a iniciarla (o su - (user)), correr id para ver si estás en el grupo.

Luego puede usar Docker sin sudo / root:

$ docker version --format '{{.Server.Version}}'
1.9.1

Finalmente, una advertencia. Solo los usuarios de confianza deben poder controlar su demonio de Docker. Consulte https://docs.docker.com/engine/security/security/.
(Pero, por supuesto, lo mismo es cierto para sudo: solo los usuarios de confianza deben estar en el wheel grupo.)

Necesitas sumarte a la docker agrupar y activar el grupo (cerrando la sesión y volviendo a iniciarla o ejecutando newgrp docker) correr docker comandos. El mensaje de error es simplemente engañoso.

sudo usermod -aG docker [username]

luego cierre sesión y vuelva a iniciar sesión

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *