Ejecutar aplicaciones con Docker como rutina diaria puede convertirse en una pesadilla cuando te encuentras con un error como el de permiso denegado de Docker al intentar conectar. Pero no te preocupes, este artículo te ayudará a volver a funcionar en poco tiempo.
En este tutorial, aprenderás muchas formas de resolver el temido mensaje de error de permiso denegado de Docker.
Prerrequisitos
Este tutorial comprende demostraciones prácticas. Para seguir adelante, asegúrate de tener lo siguiente en su lugar:
- Las demostraciones en este tutorial se ejecutan en Ubuntu 20.04, pero otras distribuciones de Linux también funcionarán.
- El motor de Docker, con la versión del tutorial siendo la 20.10.8, build 3967b7d.
Ejecución de Comandos de Docker con Permisos Elevados
Muchos factores podrían llevar a un error de permiso denegado al conectar con Docker. Uno de esos factores es que puedes estar ejecutando comandos de Docker sin anteponer el comando sudo
. El comando sudo
es el que te otorga derechos administrativos elevados junto con privilegios de seguridad al ejecutar comandos.
A continuación, puedes ver el temido error de permiso denegado al intentar ejecutar un comando docker
.

Abre tu terminal y añade sudo
al comando docker
a continuación para ejecutar
la imagen Docker hello-world
. Dado que estás ejecutando un comando elevado, deberás ingresar tu contraseña para proceder.
Verás una salida similar a la que se muestra a continuación, lo que indica que Docker está instalado correctamente.

Reiniciando el Motor de Docker
Si ejecutar comandos de Docker con privilegios elevados no soluciona el error de permiso denegado, verifica que tu Motor de Docker esté en funcionamiento. Al igual que al ejecutar un comando docker
sin el comando sudo
, un Motor de Docker detenido provoca el error de permiso denegado. ¿Cómo solucionas el error? Reiniciando tu motor de Docker.
Ejecuta el comando systemctl
a continuación para confirmar el estado del Motor de Docker (status docker
) y si está en ejecución.
A continuación, puedes ver que el Motor de Docker está en ejecución por el estado devuelto que muestra unctivo (en ejecución).

Si el Motor de Docker no está activo, ejecuta el comando systemctl
a continuación para iniciar el Motor de Docker (start docker
).
Ahora, ejecuta el comando hello-world de Docker como lo hiciste en la sección “Ejecutar comandos de Docker con permisos elevados” para verificar que el error se haya resuelto.
Agregando una cuenta de usuario a un grupo con acceso de usuario no root
Has confirmado que tu motor Docker está funcionando, ¿pero sigues obteniendo un error de permiso denegado de Docker? Si es así, necesitas agregar tu cuenta de usuario a un grupo con acceso de usuario no root. ¿Por qué? Porque cualquier comando de Docker que ejecutes en una máquina Linux que no esté en el grupo de usuario desencadena un error de permiso denegado.
- Ejecuta el comando
groupadd
a continuación para crear un nuevo grupo llamadodocker
. Ingresa tu contraseña para continuar ejecutando el comando.
Si el grupo docker existe en el grupo de usuario, verás una salida como la siguiente.

2. Luego, ejecuta el comando usermod
a continuación, donde las opciones -aG
indican al comando que agregue tu cuenta de usuario (programador
) al grupo (docker
). Este comando hace que tu cuenta de usuario tenga acceso no root.
3. Ejecuta el comando newgrp
a continuación para cambiar el ID de grupo real actual al grupo docker
.
Ejecuta este comando cada vez que desees ejecutar Docker como usuario no root.
4. Finalmente, vuelve a ejecutar la imagen Docker de hello-world para confirmar que ya no ves el error. Si, en este punto, sigues recibiendo un error, entonces considera dar más acceso al archivo docker.sock. El archivo docker.sock es el socket UNIX, una forma de comunicar información de proceso entre el usuario y el sistema, al que el demonio de Docker escucha como punto de entrada de la API de Docker.
Ejecuta el comando chmod
a continuación para otorgar a todos los usuarios acceso de lectura/escritura (666
) al archivo /var/run/docker.sock
. Ahora vuelve a ejecutar la imagen Docker de hello-world para ver si se resuelve el error.
Edición del Archivo de Unidad de Servicio Docker
Si ejecutar Docker como usuario no root no es suficiente para solucionar el error, intenta editar el archivo de unidad de servicio SystemD de Docker, un sistema de control de servicios. El archivo de servicio Docker contiene parámetros sensibles que pueden alterar el comportamiento del demonio de Docker. Puedes modificar el comportamiento predeterminado del archivo de unidad Docker agregando un comando adicional para cambiar el comportamiento predeterminado del servicio.
1. Ejecuta el siguiente comando para abrir el archivo de unidad de servicio Docker en tu editor de texto favorito. Para este ejemplo, el archivo de servicio Docker se abre en el editor de texto nano.
2. Localice el área con el encabezado [Servicio] dentro del archivo de unidad del servicio Docker, como se muestra a continuación. Copie/pegue los comandos a continuación en el archivo de unidad del servicio Docker y guarde los cambios.
A continuación, el comando SupplementaryGroups
establece los grupos Unix suplementarios donde se ejecutan los procesos. Al mismo tiempo, el comando ExecStartPost
limpia las operaciones que se ejecutan incluso si el servicio no se inicia correctamente.

3. Ahora, ejecute los comandos a continuación para reiniciar y habilitar el servicio Docker. Hacerlo le permite iniciar el servicio Docker de nuevo para evitar errores cuando ejecute comandos Docker.
4. Finalmente, vuelva a ejecutar la imagen Docker hello-world
y vea si aún recibe el error de permiso denegado.
Ejecución de Docker en Modo de Privilegio
Por último, pero no menos importante, en la lista de soluciones al error de permiso denegado de Docker está ejecutar Docker en modo privilegiado. Hacerlo otorga a un contenedor Docker acceso de root al sistema.
Ejecutar Docker en modo privilegiado es arriesgado y vulnerable a ataques de hackers. Así que tenga precaución y solo ejecute Docker en modo privilegiado cuando sepa exactamente lo que está haciendo.
1. Ejecute el comando a continuación para listar todos los contenedores Docker en su sistema y obtener el ID del contenedor que desea ejecutar.

2. A continuación, ejecute el comando docker inspect
a continuación para verificar si el contenedor que desea ejecutar ya está en modo privilegiado (--format='{{.HostConfig.Privileged}}'
). Reemplace CONTAINER_ID
a continuación con el ID del contenedor real que tomó nota en el paso uno.
Si el contenedor está en modo privilegiado, el comando devuelve un valor true en la consola. Pero si el comando devuelve un valor falso, como se muestra a continuación, continúe con el siguiente paso.

3. Por último, ejecute el comando docker
a continuación para run
el contenedor Docker en modo privilegiado (--privileged hello-world
).
Conclusión
A lo largo de este tutorial, ha aprendido muchas formas de resolver el error de permiso denegado de Docker, desde la ejecución de comandos elevados hasta la ejecución de Docker en modo privilegiado.
Ahora sabe cómo deshacerse de un error al construir aplicaciones Docker-powered; ¿quizás también quiera mantener sus imágenes de Docker limpias en todo momento?
Source:
https://adamtheautomator.com/docker-permission-denied/