Instalar Docker en modo rootless (Sin privilegios root)

Patricio Fajardo - May 28 - - Dev Community

El modo sin raíz permite ejecutar el demonio Docker y los contenedores como usuario no raíz para mitigar posibles vulnerabilidades en el demonio y el tiempo de ejecución del contenedor.

Pre-requisitos:

  • Tener actualizado docker

Consideraciones
Proceso de instalación

1.- Crear un nuevo usuario para Docker
Ejecuta los siguientes comandos para crear un usuario llamado test y asignarle una contraseña:

sudo useradd test
sudo passwd test
Enter fullscreen mode Exit fullscreen mode

2.- Asignar permisos sudo al nuevo usuario
Abre el archivo de configuración de sudo:

sudo visudo
Enter fullscreen mode Exit fullscreen mode

En la sección de usuarios, agrega la siguiente línea para otorgar permisos sudo al usuario test:

test   ALL=(ALL:ALL) ALL
Enter fullscreen mode Exit fullscreen mode

Guarda y cierra el archivo.

3.- Agregar el usuario a los grupos necesarios y ajustar IDs:
Ejecuta los siguientes comandos para agregar el usuario test a los grupos hiper y docker, y luego cambia su UID y GID a 1000:

usermod -aG test test
usermod -aG docker test
usermod -u 1000 test
groupmod -g 1000 test 
Enter fullscreen mode Exit fullscreen mode

4.- Deshabilitar Docker y habilitar linger para el usuario:

Desactiva el servicio Docker, habilita linger para el usuario test y reinicia el sistema:

sudo systemctl disable --now docker.service docker.socket
sudo loginctl enable-linger test
sudo reboot
Enter fullscreen mode Exit fullscreen mode

5.- Instalar Docker en modo rootless:
Inicia sesión con el usuario test e instala Docker en modo rootless:

su - test
dockerd-rootless-setuptool.sh install  --force --skip-iptables
Enter fullscreen mode Exit fullscreen mode

Al finalizar la instalación, debería aparecer algo semejante a esto:

Image description
Si no aparece, algo en el proceso de instalación no se realizó de manera correcta.

6.- Actualizar el archivo .bashrc:
Abre el archivo .bashrc para editarlo:

vi ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Agrega al final del archivo las siguientes líneas (estas se mencionan en la imagen anterior):

export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/2002/docker.sock
Enter fullscreen mode Exit fullscreen mode

Guarda y cierra el archivo. Luego, ejecuta el siguiente comando para aplicar los cambios:

source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

7.- Verificar la creación del archivo docker.service:
Una vez realizada la instalación, debería haberse creado un archivo docker.service en la siguiente ruta. Revisa si el archivo existe:

vi ~/.config/systemd/user/docker.service
Enter fullscreen mode Exit fullscreen mode

8.- Finalmente iniciamos docker en modo rootlees con el siguiente comando:

systemctl --user start docker
Enter fullscreen mode Exit fullscreen mode

Notas Adicionales:

  • Nota 1: Los archivos de configuración ahora se encuentran en la ruta mencionada.

Image description

  • Nota 2: Luego de estos pasos, ya puedes instalar cualquier contenedor en Docker. Es importante tener en cuenta que estos contenedores no tendrán acceso a todos los archivos del sistema, sino únicamente a aquellos a los que el usuario test tenga acceso.

Este procedimiento asegura que Docker se ejecute en modo rootless con un usuario específico, manteniendo configuraciones seguras y adecuadas para tus necesidades

Referencias:
https://www.portainer.io/blog/portainer-and-rootless-docker
https://docs.docker.com/engine/security/rootless/
https://docs.docker.com/config/daemon/

.