Hvad er forskellen mellem docker stop og docker kill, og hvordan ved docker stop, hvordan den korrekt stopper den kørende proces?
Forskellen mellem docker stop og docker kill er, at docker stop sender et SIGTERM signal og giver processen tid til at afslutte korrekt, mens docker kill sender et SIGKILL signal og stopper processen øjeblikkeligt.
Forskellen mellem docker stop og docker kill
Når man arbejder med Docker, er det vigtigt at forstå forskellen mellem kommandoerne docker stop
og docker kill
. Begge kommandoer bruges til at stoppe en kørende container, men de gør det på forskellige måder.
- docker stop:
- Sender et
SIGTERM
signal til hovedprocessen i containeren.
- Giver processen tid til at rydde op og afslutte korrekt.
- Efter en bestemt timeout (standard 10 sekunder), hvis processen ikke er stoppet, sender den et
SIGKILL
signal for at tvinge processen til at stoppe.
- docker kill:
- Sender et
SIGKILL
signal med det samme til hovedprocessen i containeren.
- Stopper processen øjeblikkeligt uden at give den tid til at rydde op.
Hvordan docker stop korrekt stopper den kørende proces
Når docker stop
kommandoen bruges, følger den en bestemt procedure for at sikre, at processen stoppes korrekt:
- Sender SIGTERM: Docker sender først et
SIGTERM
signal til hovedprocessen i containeren. Dette signal beder processen om at afslutte på en kontrolleret måde.
- Ventetid: Docker venter i en bestemt periode (standard 10 sekunder) for at give processen tid til at afslutte korrekt. Denne periode kan justeres ved at bruge flaget
-t
eller --time
efterfulgt af antallet af sekunder.
- Sender SIGKILL: Hvis processen ikke er afsluttet inden for den angivne tid, sender Docker et
SIGKILL
signal for at tvinge processen til at stoppe øjeblikkeligt.
Ved at følge denne procedure sikrer docker stop
, at processer får mulighed for at rydde op og gemme deres tilstand, hvilket kan være vigtigt for at undgå datatab eller korruption.