Sistemas y Servidores

Cómo solucionar el error 'Permission Denied' en /var/run/docker.sock sin Sudo

El mensaje permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock aparece cuando intentas ejecutar comandos de Docker sin privilegios de superusuario (sudo) y tu cuenta de Linux no pertenece al grupo con acceso al socket UNIX del demonio de Docker.

DIAGNÓSTICO RÁPIDO // MATRIZ DE RESOLUCIÓN

[TELEMETRY]
CAUSA
Permission Denied al conectar con el socket (unix:///var/run/docker.sock): El usuario actual no pertenece al grupo de sistema docker
SOLUCIÓN
Agregar el usuario al grupo docker con usermod y refrescar la sesión

La Solución Paso a Paso

  1. 1

    Paso 1: Crear el grupo docker y agregar tu usuario

    Comprueba si el grupo docker existe en tu sistema y agrega tu usuario actual a dicho grupo mediante usermod:

    BASH
    # Crear el grupo docker si no existe
    sudo groupadd docker
    
    # Agregar el usuario actual ($USER) al grupo docker
    sudo usermod -aG docker $USER
    
  2. 2

    Paso 2: Actualizar la membresía de grupos en la sesión activa

    Para que el cambio de grupo surta efecto sin necesidad de reiniciar el servidor o cerrar sesión por completo, ejecuta:

    BASH
    newgrp docker
    

    Alternativamente, si estás en una sesión SSH o terminal de escritorio, puedes cerrar la sesión y volver a iniciarla.

  3. 3

    Paso 3: Verificar los permisos de /var/run/docker.sock y probar

    Asegúrate de que el archivo de socket /var/run/docker.sock pertenezca al grupo docker:

    BASH
    ls -l /var/run/docker.sock
    

    (Debería mostrar un propietario como root:docker con permisos srw-rw----).

    Prueba la ejecución de Docker sin anteponer sudo:

    BASH
    docker run hello-world
    

Consejo de Prevención

Prácticas de seguridad recomendadas:

  • Evitar el uso de chmod 777 en el socket: Nunca otorgues permisos de lectura/escritura globales a /var/run/docker.sock, ya que expondrías todo el servidor anfitrión a riesgos de seguridad graves.
  • Evaluar Docker en modo sin raíz (Rootless Mode): En entornos de producción críticos, considera utilizar Rootless Docker para ejecutar el demonio y los contenedores dentro de un espacio de nombres de usuario sin privilegios de root.
  • Revisar scripts de CI/CD: Asegúrate de que los agentes de integración continua (Jenkins, GitLab Runner, GitHub Actions runner) pertenezcan al grupo docker en la máquina anfitriona.
Autor • Diseñador Web & Creador de Apps

Rodolfo Castro

Diseñador web, creador de aplicaciones y fundador de SoporteCero. Especialista en desarrollo de productos digitales, interfaz de usuario y arquitectura web (Pixel Digital Dz). Cada tutorial y solución de SoporteCero es reproducido y verificado en laboratorio técnico para ofrecer guías funcionales y actualizadas.