Slik starter du en Docker-container på nytt automatisk når den slutter å svare

Siste oppdatering: 02/07/2026
Forfatter: Daniel Terrasa

  • Bruk av Dockers innebygde omstartspolicyer for å håndtere systemfeil.
  • Implementering av tilpassede skript og cron for containere med usunne tilstander.
  • Avansert integrasjon med systemd for å kontrollere oppstarts- og avslutningssekvensen.
  • Eksterne overvåkingsalternativer og verktøy som Podman Quadlet.
Slik starter du en Docker-container på nytt automatisk når den slutter å svare

Jeg er sikker på at dette har skjedd med deg: du har en tjeneste som kjører i Dokker som av mystiske grunner setter seg fast med noen få dagers mellomrom. Hvordan starter jeg en Docker-container på nytt automatisk når den slutter å svare? Det er frustrerende å prøve å optimalisere kode eller konfigurasjoner uten at noe fungerer, bare for å innse at en enkel manuell omstart løser problemet og holder alt i gang i en uke til. I stedet for å stadig sjekke tiden, er den ideelle løsningen å sette opp et system som gjør dette skitne arbeidet for deg.

Å administrere containertilgjengelighet innebærer mer enn bare å sørge for at de starter automatisk når serveren slås på. sørge for at de svarer riktig på forespørslene. Noen ganger ser det ut til at containeren er «levende» for Docker, men applikasjonen inni svarer ikke, noe som tvinger oss til å lete etter løsninger som spenner fra grunnleggende daemon-parametere til oppretting av komplekse tjenester i operativsystemet.

Dockers innebygde omstartspolicyer

Den enkleste måten å starte en Docker-container på nytt automatisk er ved å bruke flagget --restart når du starter en container eller bruker kommandoen docker update Hvis containeren allerede er opprettet, tilbyr Docker flere alternativer avhengig av dine behov. For eksempel policyen alltid Dette vil føre til at containeren alltid starter på nytt, uavhengig av om prosessen endte med en feil eller om det var selve Docker-daemonen som startet på nytt.

Eksklusivt innhold - Klikk her  Hvordan kan jeg oversette en tekst i Google Translate?

Hvis du foretrekker noe mer kirurgisk, med mindre stoppet Dette er det beste valget for mange. Denne konfigurasjonen er identisk med den forrige, bortsett fra at hvis du stopper containeren manuelt for vedlikehold, Docker vil ikke forsøke å slå den på. automatisk etter en omstart av serveren, med respekt for din manuelle avgjørelse.

For de som bare ønsker å handle som svar på kritiske feil, finnes det feilmeldingDenne policyen utløser bare en omstart hvis containeren avsluttes med en avslutningskode som ikke er null. Du kan til og med begrense dette ved å legge til et maksimalt antall nye forsøk, slik at systemet ikke går inn i en uendelig omstartsløkke hvis feilen er vedvarende og kritisk.

Slik starter du en Docker-container på nytt automatisk når den slutter å svare
Slik starter du en Docker-container på nytt automatisk når den slutter å svare

Automatisering for «usunne» containere

Det er her det blir interessant. Noen ganger vises en beholder fortsatt som «Opp» (på), men helsestatusen er usunn fordi den ikke stryker i interne kontroller. Tidligere retningslinjer er ineffektive her, ettersom prosessen ikke er teknisk sett død. For å løse dette kan vi implementere direktivet HELSESJEKK i Dockerfilen eller i Docker Compose-filen, definere en kommando (for eksempel en curl til en bestemt port) for å bekrefte at appen svarer.

Når vi har satt opp helsesjekken, kan vi opprette en Bash-skript som kjører med noen minutters mellomrom ved hjelp av crontab fra Linux. Dette skriptet skal filtrere ut containere som er i en tilstand unhealthy eller de som har avsluttet med feilkode 128 og kjørt en docker restart om dem.

Eksklusivt innhold - Klikk her  Slik installerer du en skriver uten CD

For at dette skal fungere problemfritt og automatisk starte en Docker-container på nytt, er det viktig at brukeren som kjører cron-jobben har de nødvendige tillatelsene. tillatelser som kreves i docker-gruppenPå denne måten overvåker systemet miljøet hvert 5. eller 10. minutt og henter frem enhver tjeneste som har blitt «zombie», noe som garanterer nesten total tilgjengelighet uten menneskelig inngripen.

docker i windows 10
Relatert artikkel:
Hvordan installere Docker på Windows 10

Avansert integrasjon med systemd

Når du jobber i mer profesjonelle miljøer, vil du kanskje at beholderne dine skal oppføre seg slik innebygde Linux-tjenesterIntegrere Dokker Systemd lar deg administrere komplekse avhengigheter, som å sørge for at databasen starter før webapplikasjonen. Dette oppnås ved å opprette filer. .service i ruten /etc/systemd/system/.

Vi kan designe en av- og påslåingssekvens Kontrollert. Ved å bruke tilpassede skript koblet til systemd, er det mulig å stoppe containere i omvendt rekkefølge av avhengighetene deres for å forhindre datakorrupsjon. Ved å bruke typen oneshot og konfigurering av targets passende (som f.eks. multi-user.target o shutdown.target), håndterer serveren hele containerens livssyklus.

Et annet kraftig alternativ for å automatisk starte en Docker-container på nytt når den slutter å svare, er å bruke flagget --rm i kombinasjon med systemd. Dette gjør at containeren kan fjernes ved stopp og en ny opprettes fra basisimaget ved oppstart, noe som sikrer at Beholderens tilstand må alltid være ren og uforandret.delegering av datapersistens utelukkende til eksterne volumer.

Eksklusivt innhold - Klikk her  Jeg kan ikke avinstallere et program
Bruk Docker Desktop med WSL
Slik starter du en Docker-container på nytt automatisk når den slutter å svare

Eksterne verktøy og moderne alternativer

Hvis du ikke vil bry deg med å skrive Bash-skript, finnes det tredjepartsverktøy tilgjengelig. Det finnes åpen kildekode-applikasjoner som er spesielt utviklet for å starte containere på nytt basert på en etablert tidsplanDette er veldig nyttig for gjentakende oppgaver som å fornye SSL-sertifikater. På samme måte kan verktøy som Oppetid Kuma De lar deg overvåke tilstanden til tjenester fra et visuelt dashbord og sende varsler til Telegram eller Gotify hvis noe går galt. De er alle veldig nyttige for automatisk å starte en Docker-container på nytt når den slutter å svare.

For de som leter etter et lettere eller naturlig alternativ, Podman Det er et utmerket alternativ. Takket være den daemonløse arkitekturen og funksjonaliteten til KvallDen lar deg lage enkle deklarative filer som systemd automatisk konverterer til optimaliserte tjenester, og tilbyr en mye mer organisk integrasjon enn tradisjonell Docker.

Å ha full kontroll over livssyklusen til tjenestene dine innebærer å kombinere bruken av omstartsregler, konstant overvåking gjennom helsesjekker og, i mer komplekse tilfeller, støtte fra systemd eller overvåkingsverktøy slik at infrastrukturen din er robust og ikke er avhengig av at noen husker å starte serveren på nytt manuelt hver uke.