Ejecutar Docker sin ser root
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: