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

Jak udržet kontejnery Docker v chodu, když se démon zastaví

Když Docker skončí, všechny vaše kontejnery se zastaví. Výchozí instalace neumožňuje spuštění kontejnerů, pokud není spuštěn také démon. Zde je návod, jak minimalizovat prostoje při pracovní zátěži udržováním kontejnerů naživu během výpadku démona.

Proč na tom záleží?

Docker se ukázal jako spolehlivý systém, který je schopen podporovat řešení ve výrobě. To neznamená, že je neomylný. Stále se můžete setkat se zhroucením, které démona vyřadí z činnosti a odpojí vaše kontejnery.

V jiném scénáři může správce balíčků vašeho operačního systému automaticky aktualizovat Docker, což způsobí restart démona a krátkou dobu výpadku. V ideálním případě by tyto situace mohly být vyřešeny bez jakéhokoli dopadu na vaši pracovní zátěž. Jako démon pouze spravuje kontejnery, implementující příkazy jako docker run a docker rm , není nutné, aby se držel po celou dobu životního cyklu kontejneru.

Obnovení kontejneru Live

Docker podporuje systém zvaný „live restore“, který to umožňuje. Namísto ukončování kontejnerů během vypínání démona je Docker ponechá spuštěné. Po restartu bude pokračovat tam, kde skončil.

Živé obnovení musí být povoleno ručně. Můžete jej použít jednorázově spuštěním dockerd s --live-restore flag :

sudo dockerd --live-restore

Chcete-li trvale povolit živé obnovení, přidejte jej do konfiguračního souboru démona Docker. To obvykle najdete na /etc/docker/daemon.json . Pokud soubor ještě neexistuje, budete ho muset vytvořit.

{
    "live-restore": true
}

Dále musíte instruovat Docker, aby znovu načetl svou konfiguraci. Opětovné načtení nebude mít vliv na vaše kontejnery, na rozdíl od úplného restartu démona.

sudo systemctl reload docker

Nyní by mělo být aktivováno živé obnovení. Můžete to vyzkoušet zastavením démona Docker.

sudo systemctl stop docker

Všechny spuštěné kontejnery by měly zůstat aktivní, i když je démon vypnutý. Nebudete moci používat docker příkazy, protože spojení s démonem bude zrušeno, ale kontejnery zůstanou spuštěné a zachovají si svá síťová připojení.

Docker po restartu automaticky zjistí existující kontejnery. Budete moci pokračovat tam, kde jste přestali, aniž byste museli trpět prostoji.

Zpracování trvalého běhu bez démona

Spuštění kontejnerů bez aktivního připojení démona by nemělo mít žádné vážné důsledky, a to ani po delší dobu. Zjistíte však, že se protokoly začnou ztrácet během delšího výpadku démona.

Kontejnery Docker přenášejí své protokoly do vyrovnávací paměti typu „first-in-first-out“ (FIFO). Démon Docker čte obsah vyrovnávací paměti a vytváří trvalé soubory protokolu, které si prohlížíte pomocí docker logs .

Výchozí velikost vyrovnávací paměti je pouze 64 kB, takže ji lze vyčerpat, pokud démon aktivně nečte její obsah. Když se vyrovnávací paměť naplní, nelze zpracovávat žádné další protokoly, dokud démon nedokončí vyprázdnění vyrovnávací paměti. Velikost vyrovnávací paměti můžete zvýšit úpravou hodnoty /proc/sys/fs/pipe-max-size .

Upozornění k obnovení živého vysílání

Live Restore by měla pokrývat většinu scénářů, kdy se démon Docker vypne a později se obnoví. To zahrnuje aktualizace Dockeru, ale pouze mezi menšími vydáními oprav. Pokud nainstalujete novou hlavní verzi Dockeru (například 19.03 do 20.10 ), Live Restore nebude použito a démon Docker bude vždy restartován.

Měli byste být opatrní při používání funkce Live Restore jako způsobu úpravy nastavení démona Docker za běhu. Změna některých voleb, jako jsou IP adresy mostu, zabrání správnému obnovení kontejnerů při restartu démona. Pokud k tomu dojde, budete muset ručně zastavit všechny dotčené kontejnery a nahradit je novými. Tato situace může také nastat, pokud váš operační systém po restartu přiřadí jiné nastavení sítě.

Live Restore je určeno pro použití během aktualizací Dockeru a neplánovaných výpadků démonů. Pokud potřebujete upravit nastavení démona, zkuste místo toho naplánovat výpadek. Můžete také použít systemctl reload docker znovu načíst konfigurační soubory bez úplného restartování démona.

Pro kontejnery se systémem Windows zatím není k dispozici funkce Live Restore. můžete použijte Live Restore zapnuto Windows s kontejnery na bázi Linuxu. Je integrován do Docker Desktop a je povolen přes Předvolby> Démon> Pokročilé.

Závěr

Funkce Live Restore vám umožňuje minimalizovat rušivé prostoje tím, že udržuje kontejnery spuštěné bez přítomnosti démona Docker. Pokud potřebujete nainstalovat urgentní aktualizaci Dockeru nebo narazíte na překvapivý pád, vaše pracovní zatížení by mělo zůstat funkční, dokud se démon restartuje.

Aktivace Live Restore je osvědčeným krokem při spuštění Dockeru v produkci. Nástroje pro analýzu konfigurace mohou označit instalace, které ji nemají povolenou.

Kromě použití funkce Live Restore byste se měli ujistit, že vaše kontejnery mají také vhodné zásady restartování. Pomocí restart: always po restartu operačního systému nebo po spuštění jakéhokoli jiného démona, kde nelze použít funkci Live Restore, obnoví jednotlivé kontejnery.


Docker
  1. Jak automaticky aktualizovat běžící kontejnery Docker

  2. Jak předávat proměnné prostředí do kontejnerů Docker

  3. Jak zadat název hostitele pro běžící kontejner?

  1. Jak používat Docker Compose

  2. Jak připojit kontejnery Docker

  3. Jak spustit příkaz na spuštěném kontejneru Docker

  1. Jak oříznout nevyužité zdroje Dockeru

  2. Jak používat zásady restartování Dockeru k udržení běžících kontejnerů

  3. Jak vypsat Docker kontejnery