Guider/Så stoppar du Docker-containrar
Så stoppar du Docker-containrar på en Mac, en eller alla
Kort svar
För att stoppa en Docker-container kör du docker stop följt av dess namn eller ID; docker ps listar dem. För att stoppa alla containrar som körs kör du docker stop $(docker ps -q). I ett Compose-projekt stoppar docker compose stop dess containrar och docker compose down tar dessutom bort dem. docker stop ber containern att stänga av och tvingar den efter 10 sekunder. En container som kommer tillbaka har en omstartspolicy; stäng av den med docker update --restart=no. Vitals, en systemövervakare för Mac, stoppar containrar från menyraden: listan Containrar visar varje containers minne, och ett klick stoppar den efter att ha frågat.
Så stoppar du Docker-containrar från Terminal
- 01 Kör
docker psför att lista containrarna som körs, med namn och ID. - 02 Stoppa en med
docker stopoch dess namn, till exempeldocker stop web-1. Du kan ange flera i ett och samma kommando. - 03 Stoppa alla containrar som körs med
docker stop $(docker ps -q).docker ps -qskriver bara ut ID:na, och docker stop tar emot alla. - 04 För ett Compose-projekt kör du
docker compose stopi dess mapp för att stoppa tjänsterna, ellerdocker compose downför att stoppa dem och ta bort containrarna och projektets nätverk. Volymerna finns kvar om du inte lägger till-v. - 05 Kör
docker psigen. En container som fortfarande listas håller på att stängas av, och en som är tillbaka en stund senare har en omstartspolicy.
Samma kommandon fungerar med OrbStack, Colima och Rancher Desktop när kommandot docker pekar på dem. Podman har podman stop, och podman stop -a stoppar alla.
Att stoppa en container avslutar dess processer och behåller allt annat, dess filer, inställningar och volymer, redo för docker start. Det gör det till det säkra sättet att få tillbaka minne och processorkraft från en container du inte använder. Tabellen nedan jämför det med kommandona man brukar ta till i stället.
docker stop, kill, pause, rm och compose down
| Kommando | Vad det gör | Använd det när |
|---|---|---|
| docker stop | Skickar SIGTERM, sedan SIGKILL efter 10 sekunder | Nästan alltid: appen hinner skriva klart och stänga sina anslutningar |
| docker kill | Skickar SIGKILL direkt | En container ignorerar docker stop |
| docker pause | Fryser processerna, som behåller sitt minne | Du vill ha tillbaka processorn en stund, inte minnet |
| docker rm | Tar bort en stoppad container, eller en som körs med -f | Du är klar med den; namngivna volymer finns kvar |
| docker compose stop | Stoppar ett projekts containrar och behåller dem | Du ska starta samma projekt igen snart |
| docker compose down | Stoppar och tar bort containrarna och nätverket | Du vill börja från noll nästa gång; lägg till -v för att ta bort volymerna också |
Varför en stoppad container startar igen
En container med en omstartspolicy startas igen av Docker. Med always kommer en container som du har stoppat tillbaka nästa gång Docker Desktop startar, så containrar som du stoppade i går körs igen efter en omstart. Med unless-stopped förblir en container som du har stoppat stoppad. Compose-filer ställer ofta in restart: always på databaser och cacheminnen.
För att se en containers policy kör du docker inspect --format '{{.HostConfig.RestartPolicy.Name}}' följt av dess namn. För att stänga av den kör du docker update --restart=no och namnet, eller ändrar restart: i Compose-filen.
När docker stop tar 10 sekunder
docker stop väntar på att containerns huvudprocess ska avslutas efter SIGTERM. En process som ignorerar signalen, ofta ett skalskript som inte skickar den vidare, håller upp stoppet hela 10 sekunder innan Docker dödar den. docker stop -t 2 kortar väntan. Att rätta avbildningen gör att den stoppas direkt: starta appen med exec i entrypoint-skriptet, eller ställ in init: true på tjänsten i Compose.
Stoppa containrar, och få tillbaka minnet
På en Mac körs containrar i en enda virtuell Linux-maskin. Att stoppa dem frigör deras minne inuti den, men den virtuella maskinen kan fortsätta att hålla det minnet, så Aktivitetskontroll kan fortfarande visa en stor Virtual Machine Service for Docker. Resource Saver, eller att avsluta Docker Desktop, lämnar tillbaka det till macOS; se Docker använder för mycket minne för inställningarna.
Stoppa containrar utan Terminal
Vyn Containers i Docker Desktop har en Stop-knapp på varje container och på varje Compose-projekt. Den finns i Docker Desktops fönster, så du måste öppna appen för att använda den. Menyradsappar som Captain listar containrarna under en symbol i menyraden med start och stopp för var och en. Vitals gör samma sak från menyraden, och lägger till det som ingen av dem visar: hur mycket minne och processor varje container använder, så att du vet vilken du ska stoppa.
Vad Vitals tillför
Vitals stoppar containrar från menyraden på din Mac, med varje containers minne synligt.
- Listan Containrar i menyn: varje container som körs med sitt Compose-projekt, sin avbildning och en stapel för sitt minne
- Peka på en och klicka på krysset som visas. Raden frågar och stoppar den sedan på samma sätt som
docker stop, med 10 sekunder att stänga av - På fliken Containrar i fönstret markerar du flera och kontroll-klickar för att stoppa dem tillsammans, eller kontroll-klickar på ett Compose-projekt och väljer Stoppa alla
- Minne, processor, nätverk, skiva och publicerade portar för varje container, med Docker Desktop, OrbStack, Colima, Rancher Desktop och Podman
Bra att veta
- Vitals frågar innan den stoppar något, och startar, tar bort eller ändrar aldrig en container.
- En container med en omstartspolicy kan startas igen av sin motor. Fönstret säger det när det frågar.
- Om motorn vägrar eller inte svarar står det på raden att containern fortfarande körs.
- Listan Containrar visas medan en motor körs.
Frågor som folk ställer
Hur stoppar jag alla Docker-containrar på en gång?
Kör docker stop $(docker ps -q). Det listar ID:t för varje container som körs och stoppar var och en. I Vitals markerar du dem på fliken Containrar och kontroll-klickar för att stoppa dem tillsammans.
Vad är skillnaden mellan docker stop och docker kill?
docker stop skickar SIGTERM och väntar upp till 10 sekunder innan den tvingar containern med SIGKILL. docker kill skickar SIGKILL direkt, så appen får ingen chans att skriva klart eller stänga sina anslutningar.
Vad är skillnaden mellan docker compose stop och down?
docker compose stop stoppar containrarna och behåller dem, redo för docker compose start. docker compose down stoppar dem och tar bort containrarna och projektets nätverk; volymerna finns kvar om du inte lägger till -v.
Varför startar min Docker-container igen när jag har stoppat den?
Den har omstartspolicyn always, så Docker startar den igen när Docker Desktop startar. Kör docker update --restart=no med dess namn, eller ändra restart: i Compose-filen.
Raderas en containers data när den stoppas?
Nej. En stoppad container behåller sina filer och volymer, och docker start kör den igen. docker rm tar bort containern; namngivna volymer finns kvar tills du tar bort dem.
Kan jag stoppa Docker-containrar från menyraden på Mac?
Ja, med Vitals. Menyn i menyraden listar containrarna som körs med deras minne, och ett klick stoppar en container efter att ha frågat. Den fungerar med Docker Desktop, OrbStack, Colima, Rancher Desktop och Podman.
I ordlistan
Fler guider
- Varför är min Mac så långsam
- Vad tömmer batteriet på min Mac
- Vilken app använder min processor eller mitt minne
- Varför går min Mac inte i viloläge
- Chrome använder för mycket minne
- Varför låter fläktarna i min Mac så mycket
- Så styr du fläkthastigheten på en Mac
- Så frigör du RAM på en Mac
- Docker använder för mycket minne
- Volymmixer för Mac
- Alternativ till Aktivitetskontroll
- Alternativ till iStat Menus
- Alternativ till Stats
- Aktivitetshanteraren för Mac
- Bästa systemövervakarna för Mac
- Bästa menyradsövervakarna för Mac
- Bästa volymmixrarna för Mac