Hur man håller Docker-behållare igång när Daemon slutar

0
117

När Docker avslutas stoppas alla dina containrar. Standardinstallationen tillåter inte containrar att köras om inte daemon också är uppe. Så här minimerar du nedgångstiden för arbetsbelastningen genom att hålla behållare vid liv under en demonavbrott.

Varför betyder detta?

Docker har visat sig vara ett tillförlitligt system som kan stödja lösningar i produktionen. Det är inte att säga att det är ofelbart. Du kan fortfarande stöta på en krasch som slår demonen ur spel och tar dina containrar offline.

I ett annat scenario kan ditt operativsystems pakethanterare uppdatera Docker automatiskt och orsaka en omstart av en demon och en kort period av stillestånd. Helst kan dessa situationer lösas utan att det påverkar dina arbetsbelastningar. Eftersom demonen endast hanterar containrar, implementerar kommandon som docker run och docker rm, finns det inget inneboende behov av att den ska hålla fast under den mellanliggande perioden i en containers livscykel.

Container Live Restore

Docker stöder ett system som heter & # 8220; liveåterställning & # 8221; vilket gör detta möjligt. Istället för att avsluta behållare under daemon-avstängning kommer Docker att hålla dem igång. Det kommer att fortsätta där det slutade när det startades om igen.

Liveåterställning måste aktiveras manuellt. Du kan använda den på en engångsbasis genom att köra dockerd med flaggan –live-restore:

sudo dockerd –live-restore Annonsen

För att permanent aktivera liveåterställning, lägg till den i din Docker-demonkonfigurationsfil. Detta finns vanligtvis på /etc/docker/daemon.json. Du måste skapa filen om den inte redan finns.

{& quot; live-återställning & quot ;: sant}

Därefter måste du instruera Docker att ladda om konfigurationen. En omladdning påverkar inte dina behållare, till skillnad från en fullständig omstart av en demon.

sudo systemctl reload docker

Liveåterställning bör nu aktiveras. Du kan testa det genom att stoppa Docker-demon.

sudo systemctl stop docker

Alla behållare som körs ska vara aktiva, även om demonen är avstängd. Du kommer inte att kunna använda dockarkommandon, eftersom daemon-anslutningen är borta, men behållarna fortsätter att köra och behåller sina nätverksanslutningar.

Docker upptäcker automatiskt de befintliga behållarna när den startas om. Du kommer att kunna fortsätta där du slutade utan att behöva drabbas av stillestånd.

Hantering av Sustained Daemon-less Running

Att köra containrar utan en aktiv daemonanslutning borde inte ha några allvarliga konsekvenser, inte ens under en långvarig tidsperiod. Du kommer emellertid att hitta loggar som börjar gå vilse under ett långvarigt demonavbrott.

Annons

Docker-behållare rör sina loggar till en först-in först-ut-buffert (FIFO). Docker-demonen läser buffertinnehållet för att skapa de bestående loggfilerna som du visar med dockerloggar.

Standardbuffertstorleken är bara 64K så den kan tömmas om daemon inte aktivt läser innehållet . När bufferten fylls kan inga fler loggar hanteras förrän daemon slutför en buffertflush. Du kan öka buffertstorleken genom att redigera värdet på/proc/sys/fs/pipe-max-size.

Live Restore Caveats

< p>Live Restore ska täcka de flesta scenarier där Docker-demonen stängs av och senare återställs. Detta inkluderar Docker-uppdateringar men endast mellan mindre patch-utgåvor. Om du installerar en ny större Docker-version (t.ex. 19.03 till 20.10) kommer Live Restore inte att användas och Docker-demon kommer alltid att startas om.

Du bör vara försiktig med att använda Live Restore som ett sätt att redigera Docker-daemoninställningar i farten. Om du ändrar vissa alternativ, till exempel överbrygga IP-adresser, kommer behållare att återställas ordentligt när daemon startas om. Om detta händer måste du stoppa alla berörda behållare manuellt och byta ut dem mot nya. Denna situation kan också uppstå om ditt operativsystem tilldelar en annan nätverksinstallation efter en omstart.

Live Restore är avsedd för användning under Docker-uppdateringar och oplanerade daemonavbrott. Om du behöver redigera daemon-inställningar, försök planera för stillestånd istället. Du kan också använda systemctl reload docker för att ladda om konfigurationsfiler utan att helt starta om demonen.

Det finns ännu inte Live Restore för Windows-baserade behållare. Du kan använda Live Restore i Windows med Linux-baserade behållare. Det är inbyggt i Docker Desktop och aktiveras via Inställningar & gt; Daemon & gt; Avancerat.

Slutsats

Live Restore låter dig minimera störande driftstopp genom att hålla behållare igång i frånvaro av Docker-demonen. Om du behöver installera en brådskande Docker-uppdatering eller om du stöter på en överraskningskrasch bör dina arbetsbelastningar förbli i drift medan daemon startas om.

Annons

Aktivering av Live Restore är ett bästa steg när du kör Docker i produktion. Konfigurationsanalysverktyg kan flagga installationer som inte har det aktiverat.

Utöver att använda Live Restore, bör du se till att dina behållare också har rätt omstartpolicyer. Använda omstart: gör att enskilda behållare alltid kommer tillbaka efter en omstart av operativsystemet eller någon annan start av en demon där Live Restore inte kunde användas.