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.