Docker - kontenery i muszle
Domyślnie podczas uruchamiania kontenera użyjesz również pliku shell commandpodczas uruchamiania kontenera, jak pokazano poniżej. To właśnie widzieliśmy we wcześniejszych rozdziałach, kiedy pracowaliśmy z kontenerami.
Na powyższym zrzucie ekranu możesz zauważyć, że wydaliśmy następujące polecenie -
sudo docker run –it centos /bin/bash
Użyliśmy tego polecenia, aby utworzyć nowy kontener, a następnie użyliśmy polecenia Ctrl + P + Q, aby wyjść z kontenera. Zapewnia, że pojemnik nadal istnieje nawet po wyjściu z pojemnika.
Możemy sprawdzić, czy kontener nadal istnieje w Dockerze psKomenda. Gdybyśmy musieli wyjść bezpośrednio z kontenera, sam kontener zostałby zniszczony.
Teraz jest łatwiejszy sposób na przyczepienie się do kontenerów i sprawne opuszczenie ich bez potrzeby ich niszczenia. Jednym ze sposobów osiągnięcia tego jest użyciensenter Komenda.
Zanim uruchomimy nsenter polecenie, musisz najpierw zainstalować nsenterwizerunek. Można to zrobić za pomocą następującego polecenia -
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
Zanim użyjemy nsenter polecenie, musimy uzyskać identyfikator procesu kontenera, ponieważ jest to wymagane przez nsenterKomenda. Identyfikator procesu możemy uzyskać za pośrednictwem Dockerainspect command i filtrując go za pomocą Pid.
Jak widać na powyższym zrzucie ekranu, najpierw użyliśmy rozszerzenia docker pspolecenie, aby zobaczyć uruchomione kontenery. Widzimy, że istnieje jeden uruchomiony kontener o identyfikatorze ef42a4c5e663.
Następnie używamy Dockera inspect polecenie, aby sprawdzić konfigurację tego kontenera, a następnie użyj greppolecenie, aby po prostu przefiltrować identyfikator procesu. Na podstawie danych wyjściowych widać, że identyfikator procesu to 2978.
Teraz, gdy mamy identyfikator procesu, możemy przejść dalej i użyć nsenter polecenie, aby dołączyć do kontenera Docker.
nsenter
Ta metoda pozwala na dołączenie do kontenera bez wychodzenia z kontenera.
Składnia
polecenie nsenter –m –u –n –p –i –t ID kontenera
Opcje
-u jest używany, aby wspomnieć o Uts namespace
-m jest używany, aby wspomnieć o mount namespace
-n jest używany, aby wspomnieć o network namespace
-p jest używany, aby wspomnieć o process namespace
-i s, aby kontener działał w trybie interaktywnym.
-t służy do łączenia strumieni we / wy kontenera z systemem operacyjnym hosta.
containerID - To jest identyfikator kontenera.
Command - To jest polecenie do uruchomienia w kontenerze.
Wartość zwracana
Żaden
Przykład
sudo nsenter –m –u –n –p –i –t 2978 /bin/bash
Wynik
Na podstawie wyników możemy zaobserwować następujące punkty -
Monit zmieni się na bash shell bezpośrednio, gdy wydajemy plik nsenter Komenda.
Następnie wydajemy plik exitKomenda. Teraz normalnie, jeśli nie korzystałeś znsenterdowództwo, kontener zostałby zniszczony. Ale zauważysz, że kiedy uruchomimynsenter polecenie, kontener nadal działa.