Red Hat Training

A Red Hat training course is available for RHEL 8

1.4. Funcionamiento de los contenedores como raíz o sin raíz

Ejecutar las herramientas de contenedores como podman, skopeo, o buildah como un usuario con privilegio de superusuario (usuario root) es la mejor manera de asegurar que sus contenedores tengan acceso completo a cualquier característica disponible en su sistema. Sin embargo, con la característica llamada \ "Rootless Containers,\Ndisponible generalmente a partir de RHEL 8.1, puedes trabajar con contenedores como un usuario normal.

Aunque los motores de contenedores, como Docker, permiten ejecutar comandos de docker como un usuario normal (no root), el demonio de Docker que lleva a cabo esas peticiones se ejecuta como root. Así que, efectivamente, los usuarios regulares pueden hacer peticiones a través de sus contenedores que dañan el sistema, sin que haya claridad sobre quién hizo esas peticiones. Al establecer usuarios de contenedor sin raíz, los administradores del sistema limitan las actividades potencialmente dañinas de los usuarios regulares, al tiempo que permiten a esos usuarios ejecutar de forma segura muchas características de los contenedores bajo sus propias cuentas.

Esta sección describe cómo configurar tu sistema para utilizar las herramientas de contenedores (Podman, Skopeo y Buildah) para trabajar con contenedores como usuario no root (sin raíz). También describe algunas de las limitaciones que encontrarás porque las cuentas de usuario normales no tienen acceso completo a todas las características del sistema operativo que sus contenedores podrían necesitar para funcionar.

1.4.1. Preparación de los contenedores sin raíces

Es necesario convertirse en usuario root para configurar su sistema RHEL de forma que permita a las cuentas de usuario no root utilizar las herramientas de los contenedores:

  1. Install RHEL: Instale RHEL 8.1 o actualice a RHEL 8.1 desde RHEL 8.0. Las versiones anteriores de RHEL 7 carecen de las características necesarias para este procedimiento. Si está actualizando desde RHEL 7.6 o una versión anterior, continúe con "Actualizar a contenedores sin raíz" después de realizar este procedimiento.
  2. Install podman and slirp4netns: Si no está instalado, instale los paquetes podman y slirp4netns:

    # yum install slirp4netns podman -y
  3. Increase user namespaces: Para aumentar el número de espacios de nombres de usuario en el kernel, escriba lo siguiente:

    # echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
    # sysctl -p /etc/sysctl.d/userns.conf
  4. Create a new user account: Para crear una nueva cuenta de usuario y añadir una contraseña para esa cuenta (por ejemplo, joe), escriba lo siguiente:

    # useradd -c "Joe Jones" joe
    # passwd joe

    El usuario se configura automáticamente para poder utilizar podman sin raíces. En caso de que quiera habilitar un usuario existente para utilizar podman sin raíz, consulte la sección Actualización a contenedores sin raíz.

  5. Si desea ejecutar contenedores con systemd, consulte la sección Uso de las imágenes UBI init.
  6. Try a podman command: Inicie sesión directamente como el usuario que acaba de configurar (no utilice su o su - para convertirse en ese usuario porque eso no establece las variables de entorno correctas) e intente extraer y ejecutar una imagen:

    $ podman pull registry.access.redhat.com/ubi8/ubi
    $ podman run registry.access.redhat.com/ubi8/ubi cat /etc/os-release
    NAME="Red Hat Enterprise Linux"
    VERSION="8.1 (Ootpa)"
    ...
  7. Check rootless configuration: Para comprobar que tu configuración sin raíz está bien configurada, puedes ejecutar comandos dentro del espacio de nombres de usuario modificado con el comando podman unshare. Como usuario sin raíz, el siguiente comando le permite ver cómo se asignan los uids al espacio de nombres de usuario:

    $ podman unshare cat /proc/self/uid_map
             0       1001       1
             1      65537   65536