Docker sin raíz

Docker Sin Raiz



Docker es una de las herramientas más poderosas e influyentes para el desarrollo e implementación de aplicaciones modernas. Como desarrolladores, lo usamos en nuestras máquinas locales para instalar y configurar rápidamente entornos que se ajusten a las necesidades de nuestras aplicaciones en segundos.

Sin embargo, cuando trabajamos en Docker, podemos encontrarnos con casos en los que necesitamos crear y utilizar recursos de Docker pero no tenemos acceso de root.

O tal vez desee permitir que varios usuarios de un sistema determinado accedan y utilicen Docker sin otorgar permiso de root a todos los usuarios.







En este tutorial, aprenderemos sobre Docker sin raíz, qué significa, cómo funciona y cómo podemos usarlo para permitir que los usuarios sin acceso de raíz usen Docker y sus servicios asociados.



¿Qué es un Docker sin raíz?

De forma predeterminada, una vez que instala Docker, el demonio de Docker y sus herramientas requieren privilegios de root en el sistema host. Esto puede resultar significativamente en un riesgo de seguridad si Docker se ve comprometido, lo que puede otorgar acceso raíz al atacante.



Rootless Docker es una característica que nos permite usar y ejecutar el demonio Docker y los contenedores asociados sin permisos de root.





Cómo funciona

Si bien puede ser un desafío profundizar en el funcionamiento técnico de un entorno acoplable sin raíz, a continuación se ofrece una descripción general de alto nivel que explica qué hace una ventana acoplable sin raíz y cómo funciona internamente.

Espacios de nombres de usuario – Una de las características importantes que utiliza una ventana acoplable sin raíz son los espacios de nombres de usuario. Esta característica fundamental del kernel de Linux permite que los procesos tengan diferentes ID de usuario y grupo dentro del espacio de nombres en comparación con el exterior. Esto significa que un proceso puede ejecutarse como usuario raíz dentro de su espacio de nombres, pero fuera de él, se ejecuta como un usuario normal.



Redes – La siguiente característica de Docker sin raíz es la creación de redes. De forma predeterminada, el demonio Docker normal se basa en pilas de red como iptables y puentes que requieren permisos de root.

Docker aprovecha características como slirp4netns, que proporciona una pila TCP/IP en modo de usuario en una ventana acoplable sin raíz. Esto permite a Docker acceder a la red sin permiso de root en el sistema host.

Almacenamiento – La siguiente parte esencial de una ventana acoplable sin raíz es el controlador de almacenamiento. De forma predeterminada, Docker utiliza un controlador de almacenamiento overlay2 que, como puede adivinar, requiere permisos de root. En cambio, una instancia acoplable sin raíz utiliza el controlador fuse-overlayfs. Este controlador está basado en el overlay fs de FUSE, lo que nos permite montarlo sin permisos de root.

Los anteriores son algunos de los componentes esenciales de una instancia acoplable sin raíz. Recuerde que esto no explora el funcionamiento completo de una ventana acoplable desarraigada. Considere la documentación para obtener más información.

Docker sin raíz: requisitos

Salgamos de la teoría y aprendamos cómo crear y configurar un entorno Docker sin raíz.

Para seguir esta publicación, asegúrese de tener lo siguiente:

  1. Un sistema basado en Linux con permisos de root.
  2. Acceso a la red.

Configurando el sistema con UIDMap

Antes de instalar y configurar Docker, debemos instalar y configurar el sistema con la utilidad uidmap.

UIDMap nos permite administrar asignaciones UID y GUI de los procesos en un sistema Linux en el contenido de los espacios de nombres de usuario. ¿Recuerdas cuando mencionamos que Docker sin raíz aprovecha los espacios de nombres de los usuarios? Esta herramienta nos permitirá especificar las asignaciones UID y GID y sus correspondientes espacios de nombres.

Comience actualizando los paquetes del sistema de la siguiente manera:

$ sudo apt-obtener actualización

A continuación, instale la utilidad uidmap como se muestra:

$ sudo apt-obtener instalación mapa uid -y

Instalación de Docker sin raíz

El siguiente paso es procesar e instalar Docker sin raíz. Podemos hacerlo siguiendo los sencillos pasos que se detallan a continuación:

Comience descargando el script del instalador de Docker sin raíz desde el enlace que se muestra a continuación:

https://get.docker.com/rootless

Puedes usar cURL o WGET.

$ rizo -sSL https: // get.docker.com / desarraigado | sh

Tenga en cuenta que no puede ejecutar el comando anterior como usuario root.

Una vez que se complete la instalación, edite su archivo .bashrc usando su editor de texto favorito:

$ nano .bashrc

A continuación, agregue las siguientes entradas al archivo de configuración bashrc:

exportar XDG_RUNTIME_DIR = / hogar / ubuntu / .estibador / correr

exportar CAMINO = / hogar / ubuntu / papelera: $RUTA

exportar DOCKER_HOST =Unix: /// hogar / ubuntu / .estibador / correr / docker.sock

Asegúrese de cambiar el usuario de 'ubuntu' al usuario que desea instalar Docker. La salida del script le proporcionará el contenido para agregar al archivo .bashrc.

Guarde los cambios y cierre el editor.

En el siguiente paso, debemos iniciar el demonio Docker desarraigado. Podemos hacer esto usando systemctl, como se muestra en el siguiente comando:

sistemactl --ubuntu iniciar ventana acoplable

Una vez iniciado, puede utilizar los comandos de Docker para iniciar y configurar contenedores Docker.

Conclusión

En este tutorial, aprendimos la funcionalidad de Docker sin raíz, cómo funciona y cómo podemos configurarlo en un sistema Linux. No dudes en consultar la documentación de Rootless Docker para obtener más información.