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.
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.
El Diagnóstico Rápido
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.