Lavorare con il comando Nsenter Linux

Lavorare con il comando Nsenter Linux
Un modo per incapsulare il sistema host durante l'esecuzione di processi diversi è utilizzando contenitori. Per DevOps, i container sono diventati la strada da percorrere per la distribuzione delle applicazioni in quanto garantiscono la sicurezza e l'isolamento dell'intero sistema e delle risorse. L'isolamento delle risorse del sistema funziona tramite Linux spazi dei nomi. Un contenitore funziona in modo indipendente e non può accedere alle risorse host.

Il kernel può allocare e limitare le risorse a cui i processi in esecuzione possono accedere attraverso gli spazi dei nomi. Gli spazi dei nomi creano isolamento e i contenitori visualizzano solo i processi. Per lavorare facilmente con i contenitori e gli spazi dei nomi, il nsenter È richiesto il comando Linux e vedremo come utilizzare Nsenter per ispezionare ed eseguire programmi negli spazi dei nomi.

Come ispezionare gli spazi dei nomi Linux usando NSenter

Prima di immergerci nell'uso di Nsenter, dobbiamo comprendere i contenitori e gli spazi dei nomi Linux.

Cosa sono i contenitori Linux?

Con la crescente tecnologia, la domanda di sviluppare applicazioni più scalabili e sicure ha allungato la necessità di utilizzare contenitori. Si può dire che i contenitori Linux siano una tecnologia che consente di isolare e isolare applicazioni e risorse nel loro ambiente di runtime, lontano dal sistema. Inoltre, puoi anche creare contenitori contenenti spazi dei nomi per diversi processi sul sistema Linux utilizzando vari strumenti, come podman O Docker.

Per questo esempio, creeremo un nuovo contenitore usando Docker, come mostrato nell'immagine seguente.

Esci dal contenitore ed elenca i contenitori disponibili dal sistema host. Noterai che il contenitore che abbiamo creato viene elencato, incluso il suo ID contenitore.

$ sudo Docker PS -l

In alternativa, se stai usando podman Red Hat offre un contenitore nel suo catalogo a cui è possibile accedere utilizzando il comando di seguito.

$ podman run -name namespace -demo -it registry.accesso.cappello rosso.com/ubi8/ubi/bin/bash

Una volta creato il contenitore, elenca l'ID processo del contenitore creato utilizzando il comando seguente.

Elenco $ runc

Nell'output, è necessario notare l'ID del processo. Nel nostro caso, l'ID è 39782.

Usando l'ID processo sopra, è possibile ottenere gli spazi dei nomi ad esso utilizzando LSNS O nsenter.

Usare LSNS, Usa la sintassi di seguito.

$ lsns -p

A differenza di LSN, Nsenter offre più opzioni, dandoti più controllo.

Utilizzando NSenter con spazi dei nomi Linux

Alcune delle opzioni comuni che puoi utilizzare con Nsenter includono:

1. -T: Questo flag specifica l'ID del processo di destinazione.

2. -u: Viene utilizzato per immettere lo spazio dei nomi del processo e se non viene inserito alcun spazio dei nomi, utilizzerà quello del processo di destinazione.

Ad esempio, per ottenere il nome host dello spazio dei nomi con l'ID 39782, il comando sarebbe:

$ nsenter -t 39782 -u hostname

3. -UN: Utilizzato per inserire tutti gli spazi dei nomi disponibili. Nel nostro caso, ne abbiamo solo uno. Se eseguiamo il comando di seguito, noterai che siamo all'interno del contenitore.

Puoi disconnettersi digitando Uscita.

4. -N: Il flag viene utilizzato per immettere lo spazio dei nomi di rete. Vengono visualizzate solo le informazioni di rete per lo spazio dei nomi dato.

Se dovessi visualizzare gli stessi dettagli di rete dal sistema completo, noteresti che c'è l'isolamento.

L'isolamento si estende al Percorso IP, E possiamo anche ottenere il percorso IP per lo spazio dei nomi utilizzando il comando qui sotto.

$ nsenter -t 39782 -n route ip

Nell'immagine sopra, è possibile notare come sia il primo output per lo spazio dei nomi dell'ID del processo target indicato, ma il secondo output è la via IP per il sistema completo.

5. -P: Usando NSenter, è anche possibile inserire lo spazio dei nomi PID utilizzando il -P bandiera. Perché questo funzioni, dovresti avere il superiore O ps Comandi installati all'interno del contenitore.

Se hai creato il podman contenitore, utilizzare il comando seguente per installare il Procps-ng pacchetto, che installa top e PS per aiutare a visualizzare i processi attualmente in esecuzione utilizzando il PS -ef Comando Linux.

$ yum Installa Procps-ng

Ora puoi inserire lo spazio dei nomi PID utilizzando il comando di seguito.

$ nsenter -t 39782 -p -r ps -ef

IL -R Imposta la directory di root e se nessuno è specificato, come nel comando seguente, utilizza quello dell'ID del processo di destinazione.

L'output fornisce il processo attualmente in esecuzione nel contenitore.

Conclusione

Come sviluppatore, non è possibile eludere usando contenitori Linux. L'approccio migliore è dotarti di strumenti che ti consentono di interagire con i diversi spazi dei nomi per i processi in contenitori separati. Grazie ai contenitori, è possibile l'isolamento dei processi in esecuzione su Linux. Abbiamo coperto come usare il nsenter Comando Linux per immettere gli spazi dei nomi di diversi processi in qualsiasi contenitore. Continua a praticare e provare altre tattiche per capire meglio lo strumento.