GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak se odpojit od dockerového kontejneru bez zastavení

Kontejnery Docker mají interaktivní režim, který vám umožní připojit vstupní a výstupní proudy vašeho terminálu k procesu kontejneru. Stisknutím Ctrl-C se tento
proces obvykle ukončí a kontejner se zastaví. Zde je postup odpojení od relace bez zastavení kontejneru.

Odpojení bez zastavení

Docker podporuje kombinaci klávesnice pro elegantní odpojení od kontejneru. Chcete-li se odpojit od připojení, stiskněte Ctrl-P a poté Ctrl-Q.

Budete vhozeni zpět do svého shellu, ale dříve připojený proces zůstane naživu a udrží váš kontejner v chodu. Můžete to zkontrolovat pomocí docker ps získat seznam běžících kontejnerů.

Stiskněte Ctrl-C nebo spusťte exit příkaz obvykle ukončí proces na popředí kontejneru, pokud nebyl speciálně nakonfigurován. Kontejner Docker musí mít spuštěný proces v popředí; kontejner bez něj přejde do stavu zastavení.

Změna sekvence odpojení klávesnice

Sekvenci odpojení můžete změnit tak, aby odpovídala vašim preferencím, nebo se vyhnout konfliktu s klávesovými zkratkami, které vaše aplikace používá. Přidejte detachKeys vlastnost do vašeho ~/.docker/config.json soubor k určení klíčů, které chcete použít.

Docker podporuje a-z znaky a @ , ^ a _ , symboly a také znak levé závorky ([ ) a dvě zpětná lomítka (\ ). Všechny se používají ve spojení s Ctrl- klíč; písmena lze také použít jednotlivě, bez Ctrl .

Klíčové sekvence jsou vyjádřeny jako seznam oddělený čárkami:

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

Tento příklad se odpojí od kontejneru, když stisknete Ctrl-D bezprostředně následované d klíč.

Změna sekvence na základě kontejneru

Kromě změny vaší globální konfigurace přijímá Docker detachKeys přepíše na základě jednotlivých kontejnerů a příloh. Přidejte --detach-keys příznak k příkazům, které se mohou připojit ke kontejnerovým procesům a nastavit konkrétní sekvenci.

Příkazy, které to podporují, jsou:

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

Zde je návod, jak připojit ke kontejneru a poté použít Ctrl-d , za kterým následuje podtržítko pro odpojení:

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

--detach-keys flag používá stejný formát sekvence kláves jako detachKeys možnost konfigurace. Příznak přepíše váš docker.json nastavení; to zase přepíše výchozí sekvenci Ctrl-P/Ctrl-Q v Dockeru.

Odpojení, když sekvence klávesnice nebude fungovat

Někdy se můžete setkat s procesem kontejneru, který se odmítne odpojit, i když zadáte sekvenci klávesnice. K tomu může dojít, pokud vstupní stream kontejneru není připojen k vašemu terminálu (-i příznak) nebo nemá přidělené žádné pseudo-TTY (-t vlajka). Na tento problém můžete narazit také v případě, že proces vašeho kontejneru zpracovává sekvenci klíčů pro odpojení a vy jste ji při připojení nepřepsali.

Za těchto okolností je stále možné odpojit terminál od kontejneru. Musíte dočasně otevřít další okno shellu a použít ho k zabití docker.attach proces, který udržuje přílohu aktivní.

Nejprve najděte ID procesu procesu přílohy:

ps -ef | grep attach

Použijte výstup z ps k identifikaci docker.attach proces, který musíte zabít. Příkaz v CMD sloupec by měl identifikovat přílohu, kterou hledáte. Poznamenejte si příslušné číslo PID a použijte kill příkaz k ukončení tohoto procesu:

kill -9 <PID>

Měli byste vidět, jak se váš původní shell oddělil od kontejneru Docker a vrátil se do normálního provozního stavu. Nyní můžete zavřít druhý shell a pokračovat v používání původního.

Tato technika funguje tak, že zabíjí proces Docker CLI, který připojil terminál ke kontejneru, nikoli proces v kontejneru, který jej udržuje v chodu. Váš původní terminál bude znovu použitelný a kontejner zůstane nahoře.

Opětovné připojení k vašemu kontejneru

Ke kontejnerům můžete znovu připojit pomocí docker attach příkaz. Tím se automaticky připojí vstupní, výstupní a chybové proudy vašeho terminálu k určenému kontejneru:

docker attach my-container

Všechny tři streamy jsou standardně připojeny. Vstupní proud můžete vynechat předáním --no-stdin vlajka. Výstup kontejneru bude streamován do vašeho terminálu, ale nebudete moci poskytnout žádný vstup.

Pro odpojení použijte znovu sekvenci kláves nebo Ctrl-C k zastavení procesu a kontejneru. Pokud použijete Ctrl-C nebo exit , docker attach nastaví $? proměnnou ve vašem shellu správně, abyste mohli zkontrolovat výstupní kód kontejneru.

Přehled

Správný způsob, jak se odpojit od kontejneru Docker, je poměrně obskurní sekvence klávesnice, která vás vrátí zpět do vašeho shellu. Tuto sekvenci si můžete přizpůsobit, abyste si ji lépe zapamatovali a předešli konfliktům s manipulací s klávesnicí ve vašem kontejneru.

Sekvence odpojení klávesnice mohou být za určitých okolností neúčinné. Stále je možné se odpojit od vašeho kontejneru identifikací a ukončením procesu, který podporuje připojení. Běžné unixové příkazy jako ps a kill by měl být použit v tomto scénáři.

Nakonec, pokud chcete, aby byl kontejner trvale odpojen, začněte jej pomocí -d příznak (docker run -d my-image:latest ). To odešle kontejner přímo do pozadí a nevyšle žádný výstup do vašeho shellu. Oddělené kontejnery jsou vždy viditelné pomocí docker ps a lze jej zastavit pomocí docker stop my-container .


Docker
  1. Jak spustit MySQL v kontejneru Docker

  2. Jak SSH do kontejneru Docker

  3. Jak nainstalovat Vim do kontejneru Docker

  1. Jak nainstalovat WordPress pomocí Docker

  2. Jak přiřadit statickou IP ke kontejneru Docker

  3. Jak opustit kontejner Docker

  1. Jak vytvořit vlastní obrázek z kontejneru Docker

  2. Jak vytvořit Docker Image z kontejneru a Dockerfile

  3. Jak získat přístup k síťovému jmennému prostoru Docker Container z hostitele