GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecute contenedores en Linux sin sudo en Podman

Los contenedores son una parte importante de la informática moderna y, a medida que evoluciona la infraestructura en torno a los contenedores, han comenzado a surgir nuevas y mejores herramientas. Solía ​​​​ser que podía ejecutar contenedores solo con LXC, y luego Docker ganó popularidad y las cosas comenzaron a volverse más complejas. Finalmente, obtuvimos el sistema de administración de contenedores que todos merecíamos con Podman, un motor de contenedores sin demonios que hace que los contenedores y los pods sean fáciles de construir, ejecutar y administrar.

Los contenedores interactúan directamente con las capacidades del kernel de Linux, como cgroups y espacios de nombres, y generan muchos procesos nuevos dentro de esos espacios de nombres. En resumen, ejecutar un contenedor es literalmente ejecutar un sistema Linux dentro un sistema Linux. Desde el punto de vista del sistema operativo, se parece mucho a una actividad administrativa y privilegiada. Los usuarios normales no suelen tener rienda suelta sobre los recursos del sistema como exigen los contenedores, por lo que, de forma predeterminada, root o sudo Se requieren permisos para ejecutar Podman. Sin embargo, esa es solo la configuración predeterminada, y de ninguna manera es la única configuración disponible o prevista. Este artículo demuestra cómo configurar su sistema Linux para que un usuario normal pueda ejecutar Podman sin el uso de sudo ("sin raíz").

ID de usuario del espacio de nombres

Contenedores Linux

  • ¿Qué son los contenedores de Linux?
  • Una introducción a la terminología de contenedores
  • Descargar:Introducción a los contenedores
  • Operadores de Kubernetes:automatización de la plataforma de orquestación de contenedores
  • eBook:Patrones de Kubernetes para diseñar aplicaciones nativas de la nube
  • ¿Qué es Kubernetes?

Un espacio de nombres del kernel es esencialmente una construcción imaginaria que ayuda a Linux a realizar un seguimiento de qué procesos pertenecen juntos. Son las cuerdas rojas de la cola de Linux. En realidad, no hay una diferencia entre los procesos en una cola y otra, pero es útil aislarlos entre sí. Mantenerlos separados es la clave para declarar un grupo de procesos como un "contenedor" y el otro grupo de procesos como su sistema operativo.

Linux rastrea qué usuario o grupo posee cada proceso por ID de usuario (UID) e ID de grupo (GID). Normalmente, un usuario tiene acceso a aproximadamente mil UID subordinados para asignar a procesos secundarios en un espacio de nombres. Debido a que Podman ejecuta un sistema operativo subordinado completo asignado al usuario que inició el contenedor, necesita mucho más que la asignación predeterminada de subids y subgids.

Puede otorgar a un usuario más subuids y subgids con el usermod dominio. Por ejemplo, para otorgar más subids y subgids al usuario tux , elija un UID adecuadamente alto que no tenga ningún usuario asignado (como 200 000) e increméntelo en varios miles:

$ sudo usermod \
--add-subuids 200000-265536 \
--add-subgids 200000-265536 \
tux

Acceso al espacio de nombres

También hay límites en los espacios de nombres. Por lo general, esto se establece muy alto, pero puede verificar la asignación de espacios de nombres del usuario con systctl , la herramienta de parámetros del kernel:

$ sysctl --all --pattern user_namespaces
user.max_user_namespaces = 28633

Esos son muchos espacios de nombres, y probablemente sea lo que su distribución ha establecido de manera predeterminada. Si su distribución no tiene esa propiedad o la tiene muy baja, puede crearla ingresando este texto en el archivo /etc/sysctl.d/userns.conf :

user.max_user_namespaces=28633

Cargue esa configuración:

$ sudo sysctl -p /etc/sysctl.d/userns.conf

Ejecutar un contenedor sin root

Una vez que haya establecido su configuración, reinicie su computadora para asegurarse de que los cambios en su usuario y los parámetros del kernel estén cargados y activos.

Después de reiniciar, intente ejecutar una imagen de contenedor:

$ podman run -it busybox echo "hello"
hello

Contenedores como comandos

Los contenedores pueden parecer misteriosos si es nuevo en ellos, pero en realidad, no son diferentes a su sistema Linux existente. Son literalmente procesos que se ejecutan en su sistema, sin el costo o la barrera de un entorno emulado o una máquina virtual. Todo lo que separa un contenedor de su sistema operativo son los espacios de nombres del núcleo, por lo que en realidad son solo procesos nativos con diferentes etiquetas en ellos. Podman hace que esto sea más evidente que nunca, y una vez que configura Podman para que sea un comando sin raíz, los contenedores se sienten más como comandos que como entornos virtuales. Podman hace que los contenedores y las vainas sean fáciles, así que pruébalo.


Linux
  1. Ejecute una máquina virtual Linux en Podman

  2. Cómo crear un usuario Sudo en Rocky Linux 8

  3. Ejemplos de comandos sudo en Linux

  4. Ejecute el comando cd como superusuario en Linux

  5. Docker-compose:no se puede compilar SIN sudo pero puedo ejecutar contenedores sin él

Escriba los comandos de Linux en mayúsculas para ejecutarlos como usuario de Sudo

Cómo ejecutar comandos particulares sin contraseña Sudo en Linux

Cómo ejecutar comandos Sudo sin contraseña

Cómo instalar Podman en Rocky Linux 8 / AlmaLinux para ejecutar Contenedores

Cómo ejecutar un alias con Sudo en Linux

Cómo ejecutar comandos sudo sin contraseña