GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo hacer una instalación de Docker sin raíz (en Ubuntu y Debian)

¿Qué es Docker sin raíz?

Normalmente, cuando instala Docker, necesita permisos completos (root) en el sistema host. Esto crea un posible problema de seguridad porque tanto los contenedores como el servicio Docker (daemon) funcionarán como root. En la instalación sin raíz de Docker, solo el demonio de Docker se ejecuta como raíz, mientras que los contenedores se ejecutan como usuarios normales.

¿Por qué eso importa? Porque si el servicio que se ejecuta en un contenedor se ve comprometido, el atacante también puede acceder a los archivos del sistema. No existe un aislamiento real de los contenedores.

El proyecto Podman de código abierto se creó para ejecutar principalmente contenedores sin raíz. Esto ejerció presión sobre Docker para admitir una función similar para que los contenedores se ejecuten como usuarios normales, pero el servicio Docker (daemon) funciona como root.

Esta instalación sin raíz ahora está disponible desde Docker y no necesita usar Podman solo para esta función.

En este artículo, explicaré cómo instalar Docker sin acceso de root. Pero antes de mostrarte esos pasos, analicemos primero las desventajas de este modo.

Desventaja de ejecutar Docker en modo sin raíz

El mayor inconveniente de este modo es la red, y estos problemas también están presentes en Podman.

De forma predeterminada, Docker utiliza una red sin raíz.

Porque es el más rápido, con una velocidad de hasta 30 Gbps y soporta IPv4 e IPv6.

Pero tiene problemas.

Los contenedores no tendrán la IP externa de la solicitud y todas las solicitudes aparecerán desde 127.0.0.1.

Este es un gran problema, especialmente si desea implementar una protección que limite los ataques de denegación de servicio distribuido (DDOS) porque todas las solicitudes parecerán originarse desde la misma dirección.

El uso del modo Slirp4netns resuelve este problema y muestra la dirección original de la solicitud. Pero también tiene dos problemas.

  • IPv6 no compatible.
  • La velocidad es mucho más lenta (alrededor de 7 Gbps).

Requisitos

El modo sin raíz no utiliza los bits pegajosos. Necesitan newuidmap y nuevogidmap .

Es por eso que debe asegurarse de que los paquetes newuidmap y newgidmap estén instalados (a través del paquete uidmap) y que haya 65 536 ID de niños.

nuevo mapa de uid verifica que la persona que llama es el propietario del proceso indicado por pid .

id -u
1001
whoami
testuser

A continuación, verifique que el usuario tenga 65 536 sub UID:

grep ^$(whoami): /etc/subuid
testuser:231072:65536
grep ^$(whoami): /etc/subgid
testuser:231072:65536

Que significan estos numeros? El primer número es la primera identificación que se permite usar y el siguiente indica cuántas identificaciones tiene. Por ejemplo, comienza con 231072, id 0 significa 231072 e id 1000 significa 241072.

Instale la sesión de usuario de dbus y fuse-overlayfs paquetes.

Para Debian, use el comando para instalar dbus-user-session:

sudo apt install -y dbus-user-session

Y luego instale fuse-overlayfs:

sudo apt install -y fuse-overlayfs

Se recomienda utilizar Kernel 5.11 o posterior.

Instalación de docker en modo sin raíz

Ahora llegas a la parte principal. La primera parte es la instalación normal de Docker y luego ir con la parte sin raíz.

Mostraré los pasos para Ubuntu.

Instalar los paquetes habituales de Docker

Primero desinstale cualquier paquete de Docker existente:

 sudo apt remove docker docker-engine docker.io containerd runc

Y luego instale Docker en Ubuntu:

 sudo apt update
 sudo apt install docker-ce docker-ce-cli containerd.io

Verifique que Docker Engine esté instalado correctamente ejecutando la imagen hello-world.

sudo docker run hello-world

Teniendo en cuenta que el demonio Docker ya se está ejecutando, desactívelo primero.

sudo systemctl disable --now docker.service docker.socket

Instalar el paquete sin raíz

Ahora instale el paquete docker-ce-rootless-extras descargando el script oficial usando el comando curl:

curl -fsSL https://get.docker.com/rootless | sh

Siga las sugerencias en pantalla y tendrá instalado Docker sin raíz.

Al final de esta pantalla de instalación, habrá dos cosas escritas:export=xxx

Cópielos y péguelos en el último archivo .bashrc o, si está utilizando ZSH, en el archivo .zshrc. Obtenga los archivos rc que acaba de cambiar.

Una vez que se complete la instalación, ejecute daemon docker rootless:

 systemctl --user start docker

Ejecute la ventana acoplable sin raíz automáticamente en cada inicio:

systemctl --user enable docker
sudo loginctl enable-linger $(whoami)

Disfrútalo.

Información del autor:Mead Naji es desarrollador web y desarrollador de Linux de la vieja escuela.


Docker
  1. Cómo instalar y usar Docker en Ubuntu 20.04

  2. Cómo instalar Docker en Debian/Ubuntu

  3. Cómo instalar y usar Docker en Ubuntu 20.04

  4. Cómo instalar y configurar docker en Debian 11

  5. Cómo instalar Docker y ejecutar contenedores Docker en Ubuntu

Cómo instalar y usar Docker Compose en Ubuntu 20.04

Cómo instalar y usar Docker Compose en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu 22.04

Cómo instalar Docker Compose en Ubuntu

Cómo instalar y usar Docker en Ubuntu 20.04

Cómo instalar Grafana en Ubuntu 18.04 y Debian 8