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.