Linux

"Got permission denied while trying to connect to the Docker daemon socket unix:///var/run/docker.sock" en Ubuntu

08 Jul, 2026 • 7 min de lectura

Acabas de instalar Docker en Ubuntu, ejecutas tu primer docker run hello-world o docker ps, y te encuentras con esto:

Got permission denied while trying to connect to the Docker daemon socket at
unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.51/...":
dial unix /var/run/docker.sock: connect: permission denied

Es probablemente el error más común de todo el ecosistema Docker en Linux, y tiene una explicación muy sencilla: el socket de Docker pertenece al grupo docker, y tu usuario todavía no forma parte de ese grupo.

Por qué pasa

El demonio de Docker (dockerd) corre como root y expone su API a través de un socket Unix en /var/run/docker.sock. Por diseño, ese socket tiene permisos srw-rw---- y pertenece al grupo docker — cualquier usuario que pertenezca a ese grupo puede hablar con el demonio sin necesitar sudo delante de cada comando. Si acabas de instalar Docker (vía apt install docker.io o el script oficial get.docker.com), tu usuario normal todavía no está en ese grupo, así que cada llamada al socket es rechazada.

Puedes confirmarlo tú mismo:

ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 jul  8 14:02 /var/run/docker.sock

Y comprobar a qué grupos perteneces:

groups $USER

Si docker no aparece en la lista, ahí está la causa confirmada.

La solución correcta (y permanente)

sudo groupadd docker 2>/dev/null   # por si el grupo no existiera aún
sudo usermod -aG docker $USER

Importante: este cambio no se aplica a la sesión de shell actual. Linux solo relee los grupos de un usuario al iniciar una nueva sesión de login. Tienes tres opciones para que surta efecto:

  1. Cerrar sesión y volver a entrar (la más limpia).
  2. Reiniciar el equipo.
  3. Aplicar el cambio de grupo solo a la terminal actual, sin reiniciar sesión, con:
newgrp docker

newgrp docker abre una subshell con el grupo docker ya activo — funciona perfecto para probar rápido, pero solo afecta a esa terminal; las demás pestañas o ventanas que ya tuvieras abiertas seguirán sin el permiso hasta que reinicies sesión.

Verificar que ya funciona

docker run hello-world

Si ves el mensaje “Hello from Docker!” sin que te pida contraseña ni te lance el error de permisos, está resuelto.

Por qué NO deberías simplemente usar sudo docker para siempre

Una alternativa tentadora es anteponer sudo a cada comando de Docker y olvidarte del grupo. Funciona, pero tiene dos problemas reales:

  • Es tedioso — cada docker-compose up, cada script, cada alias tendría que llevar sudo delante, y es fácil que olvides ponerlo justo en el comando que sí importa.
  • Rompe herramientas que hablan directamente con el socket — extensiones de IDE, Docker Desktop-like tools, o cualquier script en Python/Node que use la librería cliente de Docker fallarán igualmente si tu usuario no está en el grupo, porque muchas de estas herramientas no invocan sudo internamente.

Añadir tu usuario al grupo docker es el flujo soportado oficialmente por Docker Inc. para uso en máquinas de desarrollo — no es un “hack”.

Nota de seguridad importante

Pertenecer al grupo docker es funcionalmente equivalente a tener acceso root sin restricciones en la máquina. Cualquier usuario en ese grupo puede montar el sistema de archivos raíz dentro de un contenedor privilegiado y escapar a root:

docker run -v /:/host -it alpine chroot /host

Esto no es un problema en tu portátil de desarrollo personal, pero no añadas usuarios al grupo docker en servidores compartidos o multiusuario sin ser consciente de esta implicación. En esos entornos, es mejor usar sudo docker explícitamente, o herramientas como rootless mode de Docker, que ejecutan el demonio sin privilegios de root.

Rootless mode: la alternativa cuando no quieres dar acceso root

Si el escenario de seguridad anterior te preocupa y tu caso de uso lo permite, Docker ofrece un modo de instalación completamente distinto llamado rootless mode, donde el propio demonio corre con los privilegios de tu usuario normal, sin necesidad de grupo docker ni de root en ningún punto de la cadena:

curl -fsSL https://get.docker.com/rootless | sh

Las contrapartidas: algunas funcionalidades avanzadas de red y ciertos casos de montaje de volúmenes tienen limitaciones en rootless mode que no existen en la instalación estándar, así que no es un reemplazo directo en el 100% de los casos — pero para desarrollo local en máquinas donde la seguridad es una preocupación real, es la alternativa más sólida a simplemente añadir tu usuario al grupo docker.

Dos formas de instalar Docker en Ubuntu, y por qué importa cuál elegiste

El error de permisos de este artículo puede aparecer con cualquiera de las dos formas más comunes de instalar Docker en Ubuntu, pero vale la pena saber cuál usaste porque afecta a otros comportamientos del sistema:

  • apt install docker.io: el paquete que mantiene el propio repositorio de Ubuntu. Suele ir una o dos versiones por detrás de la última versión de Docker Engine, pero se actualiza junto con el resto del sistema vía apt upgrade.
  • Script oficial get.docker.com (o el repositorio oficial de Docker añadido manualmente): instala siempre la versión más reciente de Docker Engine, pero requiere que gestiones las actualizaciones de ese repositorio por separado del resto de apt.

En ambos casos, el grupo docker se crea automáticamente durante la instalación, así que la solución de este artículo (usermod -aG docker $USER) aplica exactamente igual sea cual sea la vía que usaste.

Si sigues sin poder tras reiniciar sesión

En casos raros, sobre todo en WSL2 o en instalaciones con snap, el problema persiste incluso tras el usermod y reiniciar sesión. Revisa estos dos puntos adicionales:

# 1. Confirma que el servicio realmente está activo
sudo systemctl status docker

# 2. Confirma que el grupo se aplicó de verdad a tu sesión actual
id | grep docker

Si id no muestra el grupo docker después de reiniciar sesión, el problema normalmente está en cómo tu gestor de sesiones (o WSL) está cacheando los grupos del usuario — un reinicio completo del equipo (no solo cerrar sesión) suele resolverlo definitivamente.

Una vez tengas Docker funcionando sin problemas de permisos, si con el tiempo empiezas a quedarte sin espacio en disco por acumulación de imágenes y contenedores, cubrimos ese problema específico (y sus riesgos) en “docker system prune” vs “docker volume prune”: solución definitiva.