CUM SA

Cum să vă desprindeți de un container Docker fără a-l opri – CloudSavvy IT

Containerele Docker au un mod interactiv care vă permite să atașați fluxurile de intrare și ieșire ale terminalului la procesul containerului. Apăsarea Ctrl-C va termina de obicei acest lucru
proces, determinând oprirea containerului. Iată să vă detașați de o sesiune fără a opri containerul.

Desprinderea fără oprire

Docker acceptă o combinație de tastatură pentru a se detașa grațios de un container. Apăsați Ctrl-P, urmat de Ctrl-Q, pentru a vă detașa de conexiunea dvs.

Veți fi lăsat înapoi în coajă, dar procesul atașat anterior va rămâne în viață, menținând containerul în funcțiune. Puteți verifica acest lucru folosind docker ps pentru a obține o listă de containere care rulează.

Apăsați Ctrl-C sau rulați exit comanda va ucide, de obicei, procesul de prim-plan al containerului, cu excepția cazului în care a fost special configurat. Un container Docker trebuie să aibă un proces de prim plan în derulare; un container fără unul va intra în starea oprită.

Schimbarea secvenței de detașare a tastaturii

Puteți modifica secvența de detașare pentru a se potrivi preferințelor dvs. sau pentru a evita un conflict cu comenzile rapide de la tastatură onorate de aplicația dvs. Adauga o detachKeys proprietate pentru ~/.docker/config.json pentru a specifica cheile pe care doriți să le utilizați.

Docker acceptă a-z personaje și @, ^, și _, simboluri, precum și semnul paranteză stânga ([) și două bare oblice (\). Toate acestea sunt utilizate împreună cu Ctrl- cheie; literele pot fi, de asemenea, utilizate individual, fără Ctrl.

Secvențele cheie sunt exprimate ca o listă separată prin virgule:

{
    "detachKeys": "Ctrl-d,d"
}

Acest exemplu se va detașa de container atunci când apăsați Ctrl-D urmat imediat de d cheie.

Citeste si  Cum se folosește aplicația de protecție a e-mailului DuckDuckGo

Schimbarea secvenței pe o bază pe container

Dincolo de modificarea configurației dvs. globale, Docker acceptă detachKeys suprascrie pe bază de container și per atașament. Adaugă --detach-keys semnalizați comenzile care se pot atașa proceselor containerului pentru a seta o anumită secvență.

Comenzile care acceptă acest lucru sunt:

  • docker run
  • docker start
  • docker exec
  • docker attach

Iată cum să atașați la un container și apoi să îl utilizați Ctrl-d, urmat de un subliniat, pentru a desprinde:

docker attach my-container --detach-keys="Ctrl-d,_"

The --detach-keys steagul folosește același format de secvență de taste ca detachKeys opțiunea de configurare. Drapelul îl înlocuiește docker.json setare; la rândul său, aceasta anulează secvența Ctrl-P / Ctrl-Q implicită a lui Docker.

Desprinderea când secvența tastaturii nu va funcționa

Uneori s-ar putea să întâlniți un proces de container care refuză să se detașeze, chiar și atunci când emiteți secvența tastaturii. Acest lucru se poate întâmpla dacă fluxul de intrare al containerului nu este conectat la terminalul dvs. (-i pavilion) sau nu are pseudo-TTY alocat (-t steag). De asemenea, ați putea întâlni această problemă dacă procesul containerului dvs. gestionează secvența cheii de detașare și nu l-ați suprascris când ați atașat.

În aceste condiții este încă posibil să vă detașați terminalul de container. Trebuie să deschideți temporar o altă fereastră shell și să o utilizați pentru a ucide fișierul docker.attach proces care menține atașamentul activ.

Mai întâi găsiți ID-ul procesului procesului de atașament:

ps -ef | grep attach

Utilizați ieșirea din ps pentru a identifica docker.attach proces pe care trebuie să-l ucizi. Comanda din CMD coloana ar trebui să identifice atașamentul pe care îl căutați. Notați numărul PID relevant și utilizați kill comanda de a ucide acest proces:

kill -9 <PID>

Ar trebui să vedeți carcasa originală desprinzându-se de containerul Docker și revenind la o stare normală de funcționare. Acum puteți închide al doilea shell și continuați să îl utilizați pe cel original.

Citeste si  Cum să vă schimbați numele de utilizator Spotify

Această tehnică funcționează prin eliminarea procesului CLI Docker care a atașat terminalul la container, nu procesul din container care îl menține în funcțiune. Terminalul dvs. original devine din nou utilizabil, iar containerul rămâne sus.

Reatașarea la container

Puteți reatașa containerele folosind docker attach comanda. Aceasta atașează automat fluxurile de intrare, ieșire și eroare ale terminalului la containerul specificat:

docker attach my-container

Toate cele trei fluxuri sunt conectate în mod implicit. Puteți omite fluxul de intrare prin trecerea --no-stdin steag. Ieșirea containerului va fi transmisă în terminal, dar nu veți putea furniza nicio intrare.

Folosiți din nou secvența tastaturii pentru a detașa sau Ctrl-C pentru a opri procesul și containerul. Dacă folosești Ctrl-C sau exit, docker attach va seta $? variabilă în shell-ul dvs. corect, astfel încât să puteți inspecta codul de ieșire al containerului.

rezumat

Modul corect de detașare de un container Docker este o secvență de tastatură destul de obscură care te lasă înapoi în carcasă. Puteți personaliza această secvență pentru a spori memorabilitatea și a evita orice conflicte cu manipularea tastaturii containerului.

Secvențele de detașare a tastaturii pot fi ineficiente în anumite circumstanțe. Este încă posibil să se detașeze de containerul dvs. prin identificarea și uciderea procesului care susține atașamentul. Comenzi Unix obișnuite precum ps și kill trebuie utilizat în acest scenariu.

În cele din urmă, dacă doriți ca containerul dvs. să fie detașat permanent, porniți-l cu -d steag (docker run -d my-image:latest). Acest lucru va trimite containerul direct în fundal și nu va emite nicio ieșire către shell. Recipientele detașate sunt întotdeauna vizibile folosind docker ps comandă și poate fi oprit cu docker stop my-container.

Articole Similare

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Back to top button