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
unix:///var/run/docker.sock): El usuario actual no pertenece al grupo de sistema dockerdocker con usermod y refrescar la sesiónLa Solución Paso a Paso
-
1
Paso 1: Crear el grupo docker y agregar tu usuario
Comprueba si el grupo
dockerexiste en tu sistema y agrega tu usuario actual a dicho grupo medianteusermod: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
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:
BASHnewgrp dockerAlternativamente, si estás en una sesión SSH o terminal de escritorio, puedes cerrar la sesión y volver a iniciarla.
-
3
Paso 3: Verificar los permisos de /var/run/docker.sock y probar
Asegúrate de que el archivo de socket
/var/run/docker.sockpertenezca al grupodocker:BASHls -l /var/run/docker.sock(Debería mostrar un propietario como
root:dockercon permisossrw-rw----).Prueba la ejecución de Docker sin anteponer
sudo:BASHdocker run hello-world
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Evitar el uso de
chmod 777en 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
dockeren la máquina anfitriona.