GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Solución de problemas de permiso de Docker denegado

La ejecución de aplicaciones con Docker como rutina diaria puede convertirse en una pesadilla cuando se encuentra con un error como el permiso de Docker denegado al intentar conectarse. Pero no te preocupes, este artículo te ayudará a volver a correr en poco tiempo.

En este tutorial, aprenderá muchas formas de resolver el temido mensaje de error de permiso de Docker denegado.

Requisitos

Este tutorial comprende demostraciones prácticas. Para seguir, asegúrese de tener lo siguiente en su lugar:

  • Las demostraciones de este tutorial se ejecutan en Ubuntu 20.04, pero también funcionarán otras distribuciones de Linux.
  • El motor Docker, con el tutorial ejecutando la versión 20.10.8, compilación 3967b7d.

Ejecución de comandos elevados de Docker

Muchos factores podrían conducir a un permiso denegado error al conectarse a Docker. Uno de esos factores es que puede estar ejecutando comandos de Docker sin anteponer sudo dominio. El sudo comando es lo que le otorga derechos administrativos elevados junto con privilegios de seguridad cuando ejecuta comandos.

A continuación, puede ver el temido permiso denegado error al intentar ejecutar un docker comando.

Inicie su terminal y anteponga sudo a la ventana acoplable docker comando a continuación para run el hello-world Imagen acoplable. Dado que está ejecutando un comando elevado, deberá ingresar su contraseña para continuar.

sudo docker run hello-world

Verá un resultado similar al que se muestra a continuación que indica que Docker está instalado correctamente.

Reinicio del motor Docker

Si la ejecución de comandos Docker elevados no soluciona el permiso denegado error, verifique que Docker Engine se esté ejecutando. Similar a ejecutar un docker comando sin sudo comando, un Docker Engine detenido activa el permiso denegado error. ¿Cómo solucionas el error? Reiniciando su motor Docker.

Ejecute el systemctl Comando a continuación para confirmar el estado del Docker Engine (status docker ) y si se está ejecutando.

sudo systemctl status docker

A continuación, puede ver que Docker Engine se está ejecutando desde el estado devuelto que muestra activo (en ejecución).

Si Docker Engine no está activo, ejecute systemctl Comando a continuación para iniciar Docker Engine (start docker ).

sudo systemctl start docker

Ahora, ejecute el comando hello-world Docker como lo hizo en la sección "Ejecución de comandos elevados de Docker" para verificar que se haya resuelto el error.

sudo docker run hello-world

Adición de una cuenta de usuario a un grupo con acceso de usuario no root

Ha confirmado que su motor de Docker está funcionando, pero sigue recibiendo un permiso denegado de Docker. ¿error? Si es así, debe agregar su cuenta de usuario a un grupo con acceso de usuario no root. ¿Por qué? Porque cualquier comando de Docker que ejecute en una máquina Linux que no esté en el grupo de usuarios activa permiso denegado error.

  1. Ejecute groupadd comando a continuación para crear un nuevo grupo llamado docker . Ingrese su contraseña para continuar ejecutando el comando.
sudo groupadd docker

Si el grupo de acopladores existe en el grupo de usuarios, verá un resultado como el que se muestra a continuación.

2. A continuación, ejecute el usermod comando a continuación donde -aG opciones le dicen al comando que agregue su cuenta de usuario (programmer ) a la (docker ) grupo. Este comando hace que su cuenta de usuario tenga acceso de no usuario.

sudo usermod -aG docker programmer

3. Ejecute el newgrp Comando a continuación para cambiar el ID de grupo real actual a docker grupo.

Ejecute este comando cada vez que desee ejecutar Docker como usuario no root.

sudo newgrp docker 

4. Finalmente, vuelva a ejecutar la imagen de Docker hello-world para confirmar que ya no ve el error. Si, en este punto, aún recibe un error, considere otorgar más acceso al archivo docker.sock. El docker.sock El archivo es el socket de UNIX, una forma de comunicar información de procesos entre el usuario y el sistema, que el demonio Docker escucha como punto de entrada de la API de Docker.

Ejecute chmod comando a continuación para otorgar a todos los usuarios lectura/escritura (666 ) acceso a /var/run/docker.sock expediente. Ahora ejecute de nuevo la imagen de Docker hello-world para ver si se resuelve el error.

sudo chmod 666 /var/run/docker.sock

Editar el archivo de la unidad de servicio de Docker

Si ejecutar Docker como usuario no root no es suficiente para corregir el error, intente editar Docker SystemD, un sistema de control de servicios, archivo de unidad de servicio. El archivo de servicio de Docker contiene parámetros confidenciales que pueden alterar el comportamiento del demonio de Docker. Puede modificar el comportamiento predeterminado del archivo de la unidad Docker agregando un comando adicional para cambiar el comportamiento predeterminado del servicio.

1. Ejecute el siguiente comando para abrir el archivo de la unidad de servicio de Docker en su editor de texto favorito. Para este ejemplo, el archivo de servicio de Docker se abre en el editor de texto nano.

sudo nano /usr/lib/systemd/system/docker.service

2. Ubique el área con el [Servicio] encabezado dentro del archivo de la unidad de servicio de Docker, como se muestra a continuación. Copie y pegue los siguientes comandos en el archivo de la unidad de servicio de Docker y guarde los cambios.

Debajo, los SupplementaryGroups El comando establece los grupos complementarios de Unix donde se ejecutan los procesos. Al mismo tiempo, el ExecStartPost El comando limpia las operaciones que se ejecutan incluso si el servicio no se inicia correctamente.

SupplementaryGroups=docker    
ExecStartPost=/bin/chmod 666 /var/run/docker.sock

3. Ahora, ejecute los siguientes comandos para reiniciar y habilitar el servicio Docker. Si lo hace, le permite iniciar el servicio de Docker de nuevo para evitar errores cuando ejecuta los comandos de Docker.

# Reloads all the Docker unit files and recreates the entire dependency tree.
sudo systemctl daemon-reload
# Restarts the Docker service
sudo systemctl start docker
# Enable the Docker to run on your computer.
sudo systemctl enable docker

4. Finalmente, vuelva a ejecutar hello-world Imagen de Docker y vea si aún recibe el error de permiso denegado.

Ejecución de Docker en modo Privilegio

Por último, pero no menos importante, en la lista de corrección del error de permiso denegado de Docker se encuentra la ejecución de Docker en modo privilegiado. Al hacerlo, se otorga acceso raíz al sistema a un contenedor Docker.

Ejecutar Docker en modo privilegiado es riesgoso y vulnerable a ataques de piratas informáticos. Por lo tanto, tenga cuidado y solo ejecute Docker en modo privilegiado cuando sepa exactamente lo que está haciendo.

1. Ejecute el siguiente comando para enumerar todos los contenedores Docker en su sistema y obtenga la ID del contenedor que desea ejecutar.

sudo docker ls -a

2. A continuación, ejecute docker inspect comando a continuación para verificar si el contenedor que desea ejecutar ya está en modo privilegiado (--format='{{.HostConfig.Privileged}}' ). Reemplazar CONTAINER_ID a continuación con el ID del contenedor real del que tomó nota en el paso uno.

docker inspect --format='{{.HostConfig.Privileged}}' CONTAINER_ID

Si el contenedor está en modo privilegiado, el comando devuelve un verdadero valor a la consola. Pero si el comando devuelve un valor falso, como se muestra a continuación, continúe con el siguiente paso.

3. Finalmente, ejecute docker Comando a continuación para run el contenedor Docker en modo privilegiado (--privileged hello-world ).

sudo docker run --privileged hello-world

Conclusión

A lo largo de este tutorial, ha aprendido muchas formas de resolver el permiso denegado de Docker error, desde ejecutar comandos elevados hasta ejecutar Docker en modo privilegiado.

Ahora sabe cómo deshacerse de un error al crear aplicaciones basadas en Docker; ¿Quizás también desee mantener sus imágenes de Docker limpias en todo momento?


Docker
  1. Cómo utilizar el comando de inspección de Docker

  2. Cómo reparar el error de permiso denegado de Docker en Ubuntu

  3. Ejemplos útiles del comando Docker ps

  4. No se puede ejecutar NGINX Docker debido a "13:Permiso denegado"

  5. Comprender la salida del comando "docker stats"

20 ejemplos útiles de comandos Docker en Linux

¿Problemas de Docker en Ubuntu 20.04?

Cómo ejecutar un comando en un contenedor Docker en ejecución

Error de comando 'imágenes acoplables' - "Permiso denegado"

Compositor:file_put_contents(./composer.json):no se pudo abrir la secuencia:Permiso denegado

error de montaje 13 =Permiso denegado