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
2.- Asignar permisos sudo al nuevo usuario
Abre el archivo de configuración de sudo:
sudo visudo
En la sección de usuarios, agrega la siguiente línea para otorgar permisos sudo al usuario test:
test ALL=(ALL:ALL) ALL
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
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
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
Al finalizar la instalación, debería aparecer algo semejante a esto:
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
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
Guarda y cierra el archivo. Luego, ejecuta el siguiente comando para aplicar los cambios:
source ~/.bashrc
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
8.- Finalmente iniciamos docker en modo rootlees con el siguiente comando:
systemctl --user start docker
Notas Adicionales:
- Nota 1: Los archivos de configuración ahora se encuentran en la ruta mencionada.
- 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/