Praca z poleceniem Nsenter Linux

Praca z poleceniem Nsenter Linux
Jednym ze sposobów zamknięcia systemu hosta podczas uruchamiania różnych procesów jest użycie pojemniki. W przypadku DevOps kontenery stały się drogą do wdrożenia aplikacji, ponieważ gwarantują bezpieczeństwo i izolację całego systemu i zasobów. Izolacja zasobów systemowych działa za pośrednictwem Linux przestrzenie nazw. Kontener działa niezależnie i nie może uzyskać dostępu do zasobów hosta.

Jądro może przydzielić i ograniczać zasoby, do których uruchomione procesy mogą uzyskać dostęp za pomocą przestrzeni nazw. Przestrzenie nazw tworzą izolację, a pojemniki wyświetlają tylko procesy. Aby łatwo pracować z pojemnikami i przestrzeniami nazwami, nsenter Polecenie Linux jest wymagane i zobaczymy, jak używać nSenter do kontroli i wykonywania programów w przestrzeni nazw.

Jak sprawdzić przestrzenie nazw Linux za pomocą nsenter

Zanim zagłębimy się w użycie nsenter, musimy zrozumieć pojemniki i przestrzenie nazw Linux.

Co to są pojemniki Linux?

Dzięki rosnącej technologii zapotrzebowanie na opracowanie bardziej skalowalnych i bezpiecznych aplikacji zwiększyło potrzebę korzystania z kontenerów. Pojemniki Linux można najlepiej powiedzieć, że jest technologią, która umożliwia opakowanie i izolowanie aplikacji i zasobów w środowisku czasu wykonawczego, z dala od systemu. Poza tym możesz także tworzyć kontenery zawierające przestrzenie nazw dla różnych procesów w systemie Linux za pomocą różnych narzędzi, takich jak Podman Lub doker.

W tym przykładzie utworzymy nowy kontener za pomocą Dockera, jak pokazano na poniższym obrazku.

Wyjdź z kontenera i wymień dostępne kontenery z systemu hosta. Zauważysz, że utworzony przez nas kontener jest wymieniony, w tym identyfikator kontenera.

$ sudo docker ps -l

Alternatywnie, jeśli używasz Podman Red Hat oferuje pojemnik w swoim katalogu, do którego można uzyskać dostęp do poniższego polecenia.

$ Podman Run -Nazwa nazwy Demo -it -it Registry.dostęp.czerwony kapelusz.com/ubi8/ubi/bin/bash

Po utworzeniu kontenera wyświetl identyfikator procesu kontenera utworzonego za pomocą poniższego polecenia.

Lista $ runc

W wyjściu należy zwrócić uwagę na identyfikator procesu. W naszym przypadku identyfikator jest 39782.

Korzystając z powyższego identyfikatora procesu, możesz podać powiązane przestrzenie nazw za pomocą za pomocą LSNS Lub nsenter.

Używać LSNS, Użyj składni poniżej.

$ lsns -p

W przeciwieństwie do LSN, NSenter oferuje więcej opcji, zapewniając większą kontrolę.

Korzystanie z NSenter z przestrzeniami nazw Linux

Niektóre z typowych opcji, których można użyć z NSenter, obejmują:

1. -T: Ta flaga określa identyfikator procesu docelowego.

2. -u: Służy do wprowadzania przestrzeni nazw procesu, a jeśli nie zostanie wprowadzona przestrzeń nazw, użyje procesu docelowego.

Na przykład, aby uzyskać nazwę przestrzeni nazw z ID 39782, poleceniem byłoby:

$ nsenter -t 39782 -U HostName

3. -A: używane do wprowadzania wszystkich dostępnych przestrzeni nazwisk. W naszym przypadku mamy tylko jeden. Jeśli uruchomimy poniższe polecenie, zauważysz, że jesteśmy w pojemniku.

Możesz wylogować się, wpisując Wyjście.

4. -N: Flaga służy do wprowadzania przestrzeni nazw sieci. Wyświetlane są tylko informacje sieciowe dla danej przestrzeni nazw.

Jeśli wyświetlisz te same szczegóły sieci z pełnego systemu, zauważysz, że jest izolacja.

Izolacja rozciąga się na Trasa IP, i możemy również uzyskać trasę IP dla przestrzeni nazw za pomocą poniższego polecenia.

$ nsenter -t 39782 -n IP Route

Na powyższym obrazku można zauważyć, jak pierwsze wyjście jest przestrzeni nazw danego docelowego identyfikatora procesu, ale drugie wyjście jest trasą IP dla pełnego systemu.

5. -P: Korzystając z NSenter, możesz również wprowadzić przestrzeń nazw PID za pomocą -P flaga. Aby to zadziałało, powinieneś mieć szczyt Lub Ps Polecenia zainstalowane wewnątrz kontenera.

Jeśli utworzyłeś Podman kontener, użyj poniższego polecenia, aby zainstalować procps-ng pakiet, który instaluje TOP i PS, aby pomóc wyświetlić aktualnie uruchomione procesy za pomocą Ps -ef Polecenie Linux.

$ yum instaluj procps-ng

Możesz teraz wprowadzić przestrzeń nazw PID za pomocą poniższego polecenia.

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

-R ustawia katalog główny, a jeśli nie zostanie określony, jak w poniższym poleceniu, używa docelowego identyfikatora procesu.

Dane wyjściowe zapewnia aktualnie działający proces w pojemniku.

Wniosek

Jako programista nie można uniknąć za pomocą kontenerów Linux. Najlepszym podejściem jest wyposażenie się w narzędzia, które umożliwiają interakcję z różnymi przestrzeniami nazw dla procesów w osobnych pojemnikach. Dzięki pojemnikom możliwe jest izolacja procesów działających w Linux. Omówiliśmy sposób korzystania z nsenter Polecenie Linux, aby wprowadzić przestrzeni nazw różnych procesów w dowolnym pojemniku. Ćwicz i próbuj innych taktyk, aby lepiej zrozumieć narzędzie.