Cómo solucionar el error de Docker “Got permission denied while trying to connect to the Docker daemon socket” [Guía actualizada 2026]
Uno de los errores más comunes al empezar a usar Docker es “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock”. En este artículo explicamos en detalle las causas y las soluciones específicas para este error, actualizado para los entornos más recientes de 2026. Es una lectura imprescindible para todos los usuarios que utilizan Docker en Linux (Ubuntu, CentOS, Debian, etc.).
- ¿Qué es este error? Síntomas que experimentarás
- Causas de este error
- Causa 1: El usuario actual no pertenece al grupo docker
- Causa 2: No haber cerrado sesión después de cambiar el grupo
- Causa 3: El demonio de Docker no está en ejecución
- Causa 4: Los permisos de /var/run/docker.sock han sido modificados incorrectamente
- Causa 5: Restricciones de acceso de SELinux o AppArmor
- Solución 1: Añadir el usuario al grupo docker (Recomendada)
- Solución 2: Usar sudo con los comandos de Docker
- Solución 3: Usar el modo Rootless de Docker (Avanzado)
- Cómo prevenir este error
- Resumen
- Referencias
¿Qué es este error? Síntomas que experimentarás
Después de instalar Docker o al ejecutar comandos docker en un servidor Linux, es posible que veas el siguiente mensaje de error:
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
Este error puede ocurrir con prácticamente cualquier comando de Docker, incluyendo docker ps, docker run y docker-compose up. En concreto, podrías experimentar los siguientes síntomas:
docker run hello-worldfalla: El caso más frecuente al verificar la instalación de Dockerdocker psno muestra los contenedores: No se pueden ver los contenedores en ejecución debido a errores de permisosdocker-compose upno se inicia: Las aplicaciones multi-contenedor no logran arrancar- Los pipelines de CI/CD fallan: Los comandos de Docker en Jenkins, GitHub Actions, GitLab CI, etc. se detienen por errores de permisos
- La extensión Dev Containers de VS Code no puede conectarse: No es posible conectar con Docker en entornos de desarrollo remoto
Cuando ocurre este error, toda la funcionalidad de Docker queda inutilizable, deteniendo completamente el trabajo de desarrollo. Esto resulta especialmente frustrante para los usuarios que se inician en Docker.
Causas de este error
Causa 1: El usuario actual no pertenece al grupo docker
Esta es la causa más común. El demonio de Docker se comunica por defecto a través de un socket Unix (/var/run/docker.sock), y este socket pertenece al usuario root (administrador). Los usuarios normales necesitan pertenecer al grupo docker para ejecutar comandos de Docker. Instalar Docker no añade automáticamente al usuario actual a este grupo, lo que provoca errores de permisos.
# Verificar los permisos del socket
ls -la /var/run/docker.sock
# Ejemplo de salida: srw-rw---- 1 root docker 0 Feb 12 10:00 /var/run/docker.sock
Causa 2: No haber cerrado sesión después de cambiar el grupo
Después de ejecutar sudo usermod -aG docker $USER para añadir el usuario al grupo docker, no se ha cerrado sesión y vuelto a iniciar. En Linux, los cambios en la pertenencia a grupos no tienen efecto hasta que se inicia una nueva sesión (inicio de sesión). Este es un descuido muy común, y preguntas como “ejecuté el comando pero sigue sin funcionar” aparecen frecuentemente en Stack Overflow y Reddit.
Causa 3: El demonio de Docker no está en ejecución
Un error similar puede ocurrir cuando el servicio de Docker está detenido. Esto sucede cuando Docker no está configurado para iniciar automáticamente después de reiniciar el servidor, o cuando la instalación de Docker está incompleta.
# Verificar el estado del servicio Docker
sudo systemctl status docker
Causa 4: Los permisos de /var/run/docker.sock han sido modificados incorrectamente
Esto ocurre cuando los permisos del archivo del socket se han cambiado manualmente o cuando herramientas de seguridad han restablecido los permisos. El socket debería tener permisos srw-rw---- con propiedad de root:docker; si los permisos son diferentes, las conexiones normales fallarán.
Causa 5: Restricciones de acceso de SELinux o AppArmor
En distribuciones Linux con seguridad reforzada (RHEL, CentOS, Fedora, etc.), SELinux puede bloquear el acceso al socket de Docker. De manera similar, en Ubuntu y sistemas similares, AppArmor puede ser la causa.
Solución 1: Añadir el usuario al grupo docker (Recomendada)
Esta es la solución más segura y recomendada. También es el enfoque recomendado en la documentación oficial de Docker.
Paso 1: Verificar si existe el grupo docker
Primero, comprueba si el grupo docker existe en tu sistema. Normalmente se crea automáticamente durante la instalación de Docker, pero vale la pena verificarlo.
# Verificar si existe el grupo docker
cat /etc/group | grep docker
Si el grupo no existe, créalo con el siguiente comando:
# Crear el grupo docker
sudo groupadd docker
Paso 2: Añadir el usuario actual al grupo docker
Usa el siguiente comando para añadir al usuario actualmente conectado al grupo docker:
# Añadir el usuario actual al grupo docker
sudo usermod -aG docker $USER
Explicación del comando:
– usermod: Comando para modificar cuentas de usuario
– -a: Modo de adición (no elimina de grupos existentes)
– -G docker: Especifica el grupo docker
– $USER: Se completa automáticamente con el nombre del usuario actual
Para añadir un usuario específico, reemplaza $USER con el nombre de usuario:
# Ejemplo: Añadir un usuario específico
sudo usermod -aG docker nombre_usuario
Paso 3: Aplicar el cambio de grupo
Método A: Cerrar sesión y volver a iniciar (más fiable)
# Para conexiones SSH
exit
# Luego reconectar vía SSH
# Para entornos de escritorio
# Cerrar sesión y volver a iniciar
Método B: Usar newgrp para efecto inmediato (solo terminal actual)
# Activar inmediatamente el grupo docker en la sesión actual del shell
newgrp docker
Este método solo funciona para la sesión de terminal actual. Al abrir nuevos terminales, necesitarás cerrar sesión y volver a iniciar.
Paso 4: Verificar la configuración
# Verificar que perteneces al grupo docker
groups
# Probar que Docker funciona correctamente
docker run hello-world
Si aparece el mensaje Hello from Docker!, la configuración se ha completado correctamente.
Notas importantes
- Olvidar la opción
-a(añadir) hará que el usuario pertenezca “solamente” al grupo docker, eliminándolo de todos los demás grupos. Usa siempre-aGjuntos - Pertenecer al grupo docker otorga privilegios equivalentes a root. Añade solo usuarios de confianza
- En entornos WSL2 (Windows Subsystem for Linux), puede ser necesario reiniciar WSL (
wsl --shutdown)
Solución 2: Usar sudo con los comandos de Docker
Esta es una alternativa para entornos donde no se pueden cambiar los ajustes de grupo, o cuando necesitas usar Docker temporalmente.
Simplemente añade sudo antes de todos los comandos de Docker para ejecutarlos con privilegios de root:
# Ejecutar comandos de Docker con sudo
sudo docker run hello-world
sudo docker ps
sudo docker-compose up -d
Este método funciona inmediatamente pero tiene las siguientes desventajas:
- Requiere escribir
sudocada vez - Hace que la ejecución dentro de Docker Compose y scripts sea engorrosa
sudopuede no estar disponible en pipelines de CI/CD- Las variables de entorno y la configuración del contexto de Docker usan las del usuario
root
Para uso a largo plazo, se recomienda encarecidamente añadir el usuario al grupo docker (Solución 1).
Para usar Docker Compose:
# Docker Compose
sudo docker compose up -d
# Docker Compose legado (v1)
sudo docker-compose up -d
Solución 3: Usar el modo Rootless de Docker (Avanzado)
El modo Rootless, soportado oficialmente desde Docker 20.10, ejecuta el demonio de Docker con privilegios de usuario normal. A partir de 2026, Docker Engine 27.x ha mejorado aún más la estabilidad, siendo el enfoque recomendado para entornos de producción que priorizan la seguridad.
Ventajas del modo Rootless
- No se necesitan privilegios de root en absoluto
- Reducción significativa de riesgos de seguridad
- Menor riesgo de compromiso del host desde dentro de los contenedores
Pasos de instalación
Primero, instala los paquetes de dependencias necesarios:
# Ubuntu/Debian
sudo apt-get install -y uidmap dbus-user-session
# CentOS/RHEL
sudo yum install -y shadow-utils fuse-overlayfs
Luego, ejecuta el script de configuración del modo Rootless:
# Detener Docker existente (rootful)
sudo systemctl disable --now docker.service docker.socket
# Instalar el modo Rootless
dockerd-rootless-setuptool.sh install
Configura las variables de entorno:
# Añadir a ~/.bashrc o ~/.zshrc
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
# Aplicar la configuración
source ~/.bashrc
# Verificar que funciona
docker run hello-world
Notas importantes
- El modo Rootless tiene algunas limitaciones (vinculación de puertos privilegiados 80/443, ciertos controladores de almacenamiento, etc.)
- No se pueden usar directamente imágenes y volúmenes creados con privilegios de root
- La configuración de red puede diferir del modo estándar
Cómo prevenir este error
Para evitar errores de permisos en Docker, toma las siguientes medidas preventivas de forma habitual.
1. Configurar los ajustes de grupo inmediatamente después de instalar Docker
Completa la adición al grupo docker antes de ejecutar tu primer comando después de instalar Docker. Incluye esto en tu documentación de configuración o scripts para un proceso eficiente cada vez.
# Ejemplo de script de configuración post-instalación
#!/bin/bash
sudo groupadd docker 2>/dev/null
sudo usermod -aG docker $USER
echo "Por favor, cierra sesión y vuelve a iniciar"
2. Automatizar con Ansible o scripts de Shell
Al automatizar el desarrollo en equipo o la construcción de servidores, incluye la instalación de Docker y la configuración de grupos en tus scripts de automatización.
3. Verificar los ajustes de permisos del pipeline CI/CD
Para GitHub Actions, GitLab CI, Jenkins, etc., verifica previamente que los permisos de acceso al socket de Docker estén correctamente configurados. Muchas plataformas CI/CD requieren configuraciones específicas para el uso de Docker.
4. Verificar regularmente el estado del servicio Docker
# Habilitar el inicio automático de Docker
sudo systemctl enable docker
# Verificar el estado del servicio Docker
sudo systemctl status docker
5. Nunca usar chmod 666
Puedes encontrar chmod 666 /var/run/docker.sock sugerido como “solución” en internet, pero esto es extremadamente peligroso desde el punto de vista de la seguridad. Otorga a todos los usuarios acceso al demonio de Docker, otorgando efectivamente privilegios de root a todos. Nunca lo uses en entornos de producción.
Resumen
El error “Got permission denied while trying to connect to the Docker daemon socket” de Docker es un error extremadamente común que encuentran prácticamente todos los usuarios de Linux que empiezan con Docker. Sin embargo, con una comprensión adecuada de sus causas y soluciones, se puede resolver en minutos.
Puntos clave:
– Recomendado: Añadir el usuario al grupo docker con sudo usermod -aG docker $USER y cerrar sesión y volver a iniciar
– Temporal: Usar sudo docker para ejecución inmediata de comandos
– Enfocado en seguridad: Considerar el modo Rootless de Docker
Si el problema persiste, verifica lo siguiente:
1. ¿Está el servicio Docker en ejecución? (sudo systemctl status docker)
2. ¿Son correctos los permisos del archivo del socket? (ls -la /var/run/docker.sock)
3. ¿Están interfiriendo los ajustes de SELinux/AppArmor?
Si aún no puedes resolverlo, te recomendamos preguntar en los foros de la comunidad Docker o Stack Overflow con los detalles de tu entorno (SO, versión de Docker, mensaje de error completo).
Referencias
- Documentación oficial de Docker: Pasos post-instalación en Linux
- Documentación oficial de Docker: Modo Rootless
- DigitalOcean: Cómo solucionar el error de permiso denegado de Docker
- Baeldung: Permission Denied al conectar con el Docker Daemon Socket
- Foros de la comunidad Docker: Permission denied al intentar conectar
- phoenixNAP: Cómo solucionar el error Permission Denied de Docker
- OneUptime: Cómo solucionar errores Permission Denied de Docker (2026)

コメント