El núcleo puede asignar y restringir los recursos a los que los procesos que se ejecutan pueden acceder a través de los espacios de nombres. Los espacios de nombres crean aislamiento, y los contenedores solo ven procesos. Para trabajar fácilmente con los contenedores y los espacios de nombres, el nsenter Se requiere el comando de Linux, y veremos cómo usar NSenter para inspeccionar y ejecutar programas en los espacios de nombres.
Cómo inspeccionar los espacios de nombres de Linux usando nsenter
Antes de sumergirnos en el uso de NSenter, necesitamos comprender los contenedores y espacios de nombres de Linux.
¿Qué son los contenedores de Linux??
Con la creciente tecnología, la demanda de desarrollar aplicaciones más escalables y seguras ha ampliado la necesidad de usar contenedores. Se puede decir que los contenedores de Linux son una tecnología que permite aplicaciones y recursos de envasado y aislamiento en su entorno de tiempo de ejecución, lejos del sistema. Además, también puede crear contenedores que contengan espacios de nombres para diferentes procesos en su sistema Linux utilizando diversas herramientas, como podman o estibador.
Para este ejemplo, crearemos un nuevo contenedor usando Docker, como se muestra en la imagen a continuación.
Salga del contenedor y enumere los contenedores disponibles del sistema de host. Notará que el contenedor que creamos se enumera, incluida su ID de contenedor.
$ sudo docker ps -l
Alternativamente, si está usando podman Red Hat ofrece un contenedor en su catálogo al que puede acceder usando el comando a continuación.
$ Podman Run -Nombre Namespace -Demo -It Registry.acceso.sombrero rojo.com/ubi8/ubi/bin/bash
Una vez que tenga el contenedor creado, enumere la ID de proceso del contenedor creado usando el comando a continuación.
Lista de $ RUNC
En la salida, debe tener en cuenta la identificación del proceso. En nuestro caso, la identificación es 39782.
Usando la identificación del proceso anterior, puede obtener los espacios de nombres asociados con él utilizando LSNS o nsenter.
Usar LSNS, Use la sintaxis a continuación.
$ LSNS -P
A diferencia de LSNS, el NSENTER ofrece más opciones, dándole más control.
Uso de NSenter con espacios de nombres de Linux
Algunas de las opciones comunes que puede usar con Nsenter incluyen:
1. -t: Este indicador especifica la identificación del proceso de destino.
2. -U: Se utiliza para ingresar el espacio de nombres del proceso, y si no se ingresa ningún espacio de nombres, utilizará el del proceso de destino.
Por ejemplo, para obtener el nombre de host del espacio de nombres con la ID 39782, el comando sería:
$ nsenter -t 39782 -u hostname
3. -a: Se usa para ingresar todos los espacios de nombres disponibles. En nuestro caso, solo tenemos uno. Si ejecutamos el comando a continuación, notará que estamos dentro del contenedor.
Puede cerrar sesión escribiendo salida.
4. -norte: El indicador se usa para ingresar al espacio de nombres de la red. Solo se ve la información de la red para el espacio de nombres de determinación.
Si viera los mismos detalles de la red del sistema completo, notaría que hay aislamiento.
El aislamiento se extiende al Ruta IP, Y también podemos obtener la ruta IP para el espacio de nombres utilizando el comando a continuación.
$ nsenter -t 39782 -n ruta IP
En la imagen de arriba, puede notar cómo la primera salida es para el espacio de nombres de la ID de proceso de destino dada, pero la segunda salida es la ruta IP para el sistema completo.
5. -pag: Usando nsenter, también puede ingresar el espacio de nombres de PID utilizando el -pag bandera. Para que esto funcione, debe tener el arriba o PD Comandos instalados dentro del contenedor.
Si creaste el podman contenedor, use el comando a continuación para instalar el procps-ng paquete, que instala Top y PS para ayudar a ver los procesos de ejecución actualmente utilizando el PS -EF Comando de Linux.
$ yum instalación procps-ng
Ahora puede ingresar el espacio de nombres PID usando el comando a continuación.
$ nsenter -t 39782 -p -r ps -ef
El -riñonal Establece el directorio raíz, y si no se especifica ninguno, como en el comando a continuación, utiliza el de la identificación del proceso de destino.
La salida proporciona el proceso de ejecución actualmente en el contenedor.
Conclusión
Como desarrollador, no puede evadir con contenedores de Linux. El mejor enfoque es equiparse con herramientas que le permitan interactuar con los diferentes espacios de nombres para procesos en contenedores separados. Gracias a los contenedores, es posible el aislamiento de los procesos que se ejecutan en Linux. Hemos cubierto cómo usar el nsenter Comando de Linux para ingresar los espacios de nombres de diferentes procesos en cualquier contenedor. Sigue practicando e intentando otras tácticas para comprender mejor la herramienta.