Cum să ieșiți din docker exec după ce containerul a ieșit? (Administrarea sistemului, Ubuntu, Bash, Docker, Containere)

Jeff Learman a intrebat.
a intrebat.

Cum pot ieși în mod grațios dintr-un container docker la care m-am conectat folosind docker exec -ti, după ce docker-ul la care m-am conectat iese?

Dacă ies din containerul original, shell-ul care a rulat docker exec este blocat, iar singura modalitate pe care o găsesc pentru a ieși înapoi în shell-ul său este de a ucide shell-ul docker exec dintr-un alt terminal.

Există o modalitate mai grațioasă?

Acest lucru se întâmplă indiferent dacă pornesc containerul cu --rm sau nu.

Rulez docker 19.03.12 sub bash 5.0.16 în gnome-terminal 3.26.3 în Ubuntu 20.04.

Comentarii

  • Această întrebare a fost pusă anterior, Vă rugăm să consultați: stackoverflow.com/questions/19688314/… -…  > Por Khushal.
  • Mulțumesc @user929169 — nu știam care sunt termenii potriviți de folosit. Nu pot închide acest lucru ca fiind duplicat, deoarece răspunsul este pe un alt site. Postați asta ca răspuns și veți primi punctele. –  > Por Jeff Learman.
  • În propriul meu mediu Debian care rulează 19.03.11, instanța de execuție iese imediat și îmi returnează promptul shell imediat ce containerul iese. Puteți furniza mai multe detalii pentru a reproduce problema dvs. –  > Por BMitch.
  • @BMitch Am editat întrebarea pentru a adăuga -ti steaguri; îmi pare rău că am omis asta! –  > Por Jeff Learman.
2 răspunsuri
Khushal

Pentru a detașa tty-ul fără a ieși din shell, utilizați secvența de evacuare CTRL+P urmată de CTRL+Q. Mai multe detalii aici.

Informații suplimentare din această sursă:

docker run -t -i → poate fi detașat cu Ctrl+P & Ctrl+Q sechestrat și reatașat cu docker attach

docker run -i → nu poate fi detașat cu Ctrl+P & Ctrl+Q secvență; va întrerupe stdin

docker run → nu poate fi detașat cu Ctrl+P & Ctrl+Q; poate SIGKILL client; se poate reatașa cu docker attach

Sper că acest lucru vă ajută.

Comentarii

  • Aceste informații sunt pentru docker attach funcționează și pentru docker exec? –  > Por CptanPanic.
rgio

Mai întâi rulați containerul cu detașat mode, nu în prim-plan:

docker run --name mynginx -p 80:80 -d nginx

Apoi poți să te atașezi la el cu docker exec:

docker exec -it mynginx /bin/sh

Rețineți că, dacă doriți să vă atașați la un container pentru inspecție, trebuie să specificați --interactive , -i și --tty , -t opțiunile, deoarece containerul rulează deja procesul principal în fundal de la procesul dvs. anterior docker run -d comandă anterioară.
În acest fel, atunci când terminați de inspectat containerul, puteți ieși elegant din el cu ctrl+d sau logout așa cum ieșiți dintr-un shell obișnuit

Comentarii

  • Mulțumesc, dar nu răspunde la întrebarea pe care am pus-o. –  > Por Jeff Learman.
  • Îmi pare rău că am înțeles greșit –  > Por rgio.
  • np, iar răspunsul dvs. ar putea fi util pentru cineva cu o întrebare asemănătoare. –  > Por Jeff Learman.