Ejecutar Docker sin ser root

Linux Nivel Medio 21 de dic. de 2022

Docker sin sudo

Pasos para habilitar docker para que ciertos usuarios puedan usar los comandos de docker sin necesidad de ser root.

Debido a que Docker accede a ciertos recursos privilegiados del sistema (red, memoria, reglas de iptables, rutas de directorios restringidas, etc), sólo se permite al usuario root ejecutar los comandos docker.

Permitir el acceso a Docker a usuarios no root

Por defecto, Docker sólo permite al usuario root ejecutar contenedores. La solución para que otro usuario pueda pueda ejecutar contenedores, es incluir el usuario al que quieras permitir la ejecución al grupo docker, es un grupo que se crea automáticamente en la instalación de Docker.

Vamos a suponer que quieres que el usuario desarrollador ejecutar contenedores Docker.

Crear grupo Docker

Si no existe el grupo docker será necesario crearlo mediante el siguiente comando:

sudo groupadd docker

Nuevo usuario con acceso a docker

Si el usuario no existe, deberás crearlo, para ello ejecuta el comando:

sudo useradd -s /bin/bash -m -G docker desarrollador

Creamos el usuario, asignándole por defecto una shell con bash, se crea su directorio home y se le incluye en el grupo secundario docker.

Usuarios existentes con permiso a docker

Si el usuario ya existe simplemente debemos incluir ese usuario en el grupo de docker para permitirle la ejecución de contenedores docker:

sudo usermod -aG docker desarrollador

Permisos para el socket de Docker

Además necesitamos ajustar los permisos del fichero de socket que genera el demonio de docker para conectarse:

sudo setfacl -m user:$USER:rw /var/run/docker.sock

Comprobación de los permisos para ejecución de docker

Ahora simplemente debemos iniciar una nueva sesión con el usuario al que hemos habilitado el acceso a docker, en nuestro caso desarrollador y verificar la configuración.

docker run hello-world

Y veremos que efectivamente funciona:

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux