Resolución del error de conexión al demonio de Docker en Linux

El mensaje de error Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? indica que la interfaz de línea de comandos de Docker no puede establecer comunicación con el proceso en segundo plano que gestiona los contenedores. A continuación, se detallan los pasos técnicos para diagnosticar y corregir esta incidencia en sistemas basados en Linux.

  1. Verificación y arrenque del servicio Docker

La causa más frecuente de este fallo es que el demonio de Docker no se esté ejecutando, especialmente después de un reinicio del sistema o una actualización de paquetes.

# Comprobar si el proceso principal está activo en el sistema
ps aux | grep [d]ockerd

# Iniciar el servicio si no se encuentra en ejecución
sudo systemctl start docker.service

# Configurar el servicio para que arranque automáticamente con el sistema
sudo systemctl enable docker.service
  1. Ajuste de permisos de usuario

Por defecto, el socket de Docker requiere privilegios de root. Para evitar el uso constante de sudo, el usuario actual debe pertenecer al grupo dedicado de Docker.

# Consultar si el grupo docker existe y sus miembros actuales
getent group docker

# Agregar el usuario actual al grupo docker
sudo usermod -aG docker ${USER}

# Recargar la membresía del grupo en la sesión actual sin necesidad de reiniciar
newgrp docker

Si el comando newgrp no surte efecto en la terminal actual, es necesario cerrar la sesión y volver a iniciarla para que los cambios de permisos se apliquen correctamente a nivel de sistema.

  1. Revisión de subsistemas de seguridad

Mecanismos de seguridad del kernel o reglas de cortafuegos pueden estar bloqueando las comunicaciones locales o de red del demonio.

# Verificar el modo de operación actual de SELinux
getenforce

# Establecer SELinux en modo permisivo de forma temporal para descartar conflictos
sudo setenforce Permissive

Si al cambiar a modo permisivo el error desaparece, será necesario ajustar las políticas de SELinux para permitir el acceso de Docker o desactivarlo permanentemente en entornos de desarrollo donde los requisitos de seguridad sean menos estrictos.

Asimismo, se debe asegurar que el cortafuegos (como firewalld o iptables) no esté bloqueando los puertos o la comunicación a través del socket local.

  1. Análisis de registros del demonio

Cuando las verificaciones anteriores no revelan la causa raíz, los registros del sistema proporcionan información detallada sobre fallos de configuración, conflictos de puertos o errores de sintaxis en los archivos de configuración del demonio.

# Obtener las entradas más recientes del log del servicio de Docker
sudo journalctl -xeu docker.service | tail -n 100

Este comando filtra y muestra las últimas cien líneas de los registros, permitiendo identificar excepciones específicas que impiden el inicio o la comunicación correcta con el proceso en segundo plano.

Etiquetas: Docker linux systemctl selinux journalctl

Publicado el 10-22 16:01