Alle Docker-containers stoppen: een stapsgewijze gids
Leer hoe je alle draaiende Docker-containers stopt met eenvoudige commando’s. Dit helpt je systeemresources te beheren en je Docker-omgeving te stroomlijnen.
Containers één voor één stoppen kan je ontwikkelworkflow vertragen en tot fouten leiden wanneer je met microservices of multi-containerapplicaties werkt.
In deze gids behandel ik verschillende methoden om alle draaiende containers te beëindigen.
Aan het einde van deze tutorial kun je:
Begrijpen hoe Docker omgaat met signalen en wachttijden (grace periods)
Alle containers stoppen met eenvoudige CLI-technieken en filters
Docker Compose en aangepaste aliassen inzetten voor gestroomlijnde workflows
Begrijpen hoe Docker containers beëindigt
Voordat je containers in bulk stopt, is het handig te begrijpen hoe Docker onder de motorkap shutdowns orkestreert.
Signaalgestuurde procesafhandeling
Docker gebruikt Unix-signalen om eerst om een nette afsluiting te vragen voordat beëindiging wordt afgedwongen. Het standaardgedrag van het docker stop-commando is:
Stuur SIGTERM naar het hoofdproces van de container.
Wacht tot 10 seconden (instelbaar met -t/--time).
Stuur SIGKILL als het proces niet is gestopt.
SIGTERM: Vraagt het proces netjes op te ruimen en af te sluiten.
Wachttijd (grace period): Geeft applicaties tijd om logs weg te schrijven, verbindingen te sluiten of status op te slaan.
SIGKILL: Forceert onmiddellijke beëindiging van elk niet-reagerend proces.
Mechaniek van de command-line interface (CLI)
Standaard handelt docker stop één container tegelijk af. Met shell-features kun je het uitbreiden om meerdere containers te stoppen.
# Stop een enkele container met de naam my_containerdocker stop my_containerMogelijk gemaakt door
Dit stuurt SIGTERM naar my_container en wacht standaard 10 seconden voordat indien nodig SIGKILL wordt verzonden.
# Stop alle draaiende containers in één keerdocker stop $(dockerps-q)Mogelijk gemaakt door
Hier geeft docker ps -q de ID’s van alle draaiende containers; die ID’s worden doorgegeven aan docker stop, dat de containers achtereenvolgens afsluit.
Schermafbeelding van een terminal waarin de output van docker ps -q wordt doorgegeven aan docker stop
Log afsluitevents (tijdstempels en exitcodes) om beëindigingsproblemen te diagnosticeren.
Veelvoorkomende problemen oplossen
Zelfs eenvoudige commando’s kunnen haperen—zo pak je ze aan.
Zombieprocessen en verweesde volumes
Geforceerde beëindigingen kunnen achtergebleven processen of verweesde volumes nalaten, die hostresources en schijfruimte verbruiken. Opschonen doe je zo:
Beëindig handmatig eventuele achterblijvende dockerd-childprocessen als ze blijven bestaan.
Praktijkgeval: In een project gebruikte ik docker kill op een databasecontainer toen een migratie vastliep. De abrupte kill voorkwam dat de DB transactielogs kon wegschrijven, waardoor de InnoDB-tabellen corrupt raakten. We moesten backups terugzetten en binlogs opnieuw afspelen, wat meer dan 30 minuten downtime kostte. Voorkom dit door docker stop met een verlengde time-out te gebruiken of door juiste SIGTERM-handlers in je applicatie toe te voegen.
Permission denied-fouten
Docker-commando’s uitvoeren zonder de juiste rechten veroorzaakt vaak fouten:
Zet sudo voor je commando’s of draai als gebruiker in de docker-groep.
Voeg je gebruiker toe aan de docker-groep en log opnieuw in:
Na uit- en weer inloggen kun je Docker-commando’s zonder sudo uitvoeren. Zorg in een CI-omgeving dat de runner-gebruiker lid is van de Docker-groep om pipelinefouten te voorkomen.
Windows-specifieke aandachtspunten
Gebruik in Windows PowerShell haakjes om subcommando’s en voer uit als Administrator:
PowerShell starten met verhoogde rechten voorkomt firewall- of toegangsproblemen. Als je TLS-handshakefouten ziet, controleer dan of de daemonconfiguratie van Docker Desktop overeenkomt met je PowerShell-omgeving.
Conclusie
Alle Docker-containers efficiënt stoppen bespaart tijd, spaart resources en minimaliseert menselijke fouten in je ontwikkelworkflow. Door te begrijpen hoe Docker signalen afhandelt, CLI-filters te benutten, Docker Compose te gebruiken en eenvoudige aliassen te maken, houd je een schone en voorspelbare omgeving.
Containers met een herstartbeleid zoals always starten automatisch opnieuw na het stoppen. Verwijder of wijzig het beleid met docker update --restart=no <container> als je wilt dat ze gestopt blijven.
Is er een manier om containers per netwerk of volume te stoppen? ⌄
Hoewel Docker niet direct filtert op netwerk of volume bij docker stop, kun je docker ps --filter "network=<name>" of docker ps --filter "volume=<name>" combineren met commandosubstitutie.
Hoe kan ik docker stop integreren in een CI/CD-pipeline?⌄
Neem het stop-commando op in je buildscripts of CI-jobs—gebruik vlaggen zoals --signal en filters voor gerichte shutdowns, en voer daarna opschoningscommando’s uit (docker system prune) in dezelfde pipeline.
Kan ik daarna alle gestopte containers opnieuw starten?⌄
Ja, gebruik docker start $(docker ps -a -q) om alle containers, inclusief eerder gestopte, opnieuw te starten.
Worden containers verwijderd als ik ze allemaal stop?⌄
Nee, containers stoppen verwijdert ze niet. Ze blijven op je systeem staan totdat je ze verwijdert met docker rm.
Hoe kan ik het dagelijks stoppen van containers automatiseren?⌄
Gebruik een cronjob met het commando docker stop $(docker ps -q) om automatisch stoppen in te plannen.
Ik ben een data-engineer en communitybouwer die werkt aan datapijplijnen, cloud en AI-tools, en tegelijkertijd praktische, impactvolle tutorials schrijft voor DataCamp en beginnende developers.
Containers één voor één stoppen kan je ontwikkelworkflow vertragen en tot fouten leiden wanneer je met microservices of multi-containerapplicaties werkt.
In deze gids behandel ik verschillende methoden om alle draaiende containers te beëindigen.
Aan het einde van deze tutorial kun je:
Begrijpen hoe Docker containers beëindigt
Voordat je containers in bulk stopt, is het handig te begrijpen hoe Docker onder de motorkap shutdowns orkestreert.
Signaalgestuurde procesafhandeling
Docker gebruikt Unix-signalen om eerst om een nette afsluiting te vragen voordat beëindiging wordt afgedwongen. Het standaardgedrag van het
docker stop-commando is:SIGTERMnaar het hoofdproces van de container.-t/--time).SIGKILLals het proces niet is gestopt.Mechaniek van de command-line interface (CLI)
Standaard handelt
docker stopéén container tegelijk af. Met shell-features kun je het uitbreiden om meerdere containers te stoppen.Dit stuurt SIGTERM naar
my_containeren wacht standaard 10 seconden voordat indien nodig SIGKILL wordt verzonden.Hier geeft
docker ps -qde ID’s van alle draaiende containers; die ID’s worden doorgegeven aandocker stop, dat de containers achtereenvolgens afsluit.Schermafbeelding van een terminal waarin de output van
docker ps -qwordt doorgegeven aandocker stopVoor een uitgebreidere uitleg van deze concepten kun je Containerization and Virtualization Concepts verkennen.
Vergelijking tussen docker stop en docker kill
Kiezen tussen netjes of geforceerd beëindigen helpt onbedoelde gevolgen te voorkomen.
Nette vs. onmiddellijke beëindiging
Commando
Signaal/signalen
Gedrag
Gebruikssituatie
docker stop
SIGTERM → SIGKILL na timeout
Netjes afsluiten met tijd voor opruimen
Routinematig onderhoud of updates
docker kill
SIGKILL
Onmiddellijke beëindiging
Noodherstel bij vastgelopen containers
Signalen aanpassen
Beide commando’s ondersteunen een
--signal-vlag om standaarden te overschrijven:Hiermee kunnen processen
SIGINTopvangen voor aangepaste opruimacties.Zoals hierboven te zien is, kun je aangepaste signalen gebruiken wanneer je applicatie specifieke shutdown-hooks implementeert.
Geavanceerde strategieën om containers te stoppen
Door te filteren en automatiseren kun je containers gerichter stoppen, vooral in grootschalige omgevingen.
Zodra je de basis begrijpt, kun je verfijnen welke containers je stopt en hoe je het proces automatiseert.
Gefilterde beëindiging van containers
Met filters kun je containers targeten op kenmerken zoals imagenaam, status of labels:
Bovenstaand commando stopt alleen containers op basis van
my_image:latest, wat gerichte controle biedt in projecten met meerdere services.Use-cases:
--filter "ancestor=test:latest")--filter "label=env=dev")Terminal-schermafbeelding van het gebruik van
docker ps --filterGeautomatiseerde opschoning met Docker Compose
Als je services zijn gedefinieerd in een
docker-compose.yml-bestand, stopt één commando alle gerelateerde containers:Dit respecteert je servicedepedenties en ingestelde time-outs voor een nette afsluiting.
Voor geavanceerdere technieken kun je de cursus Intermediate Docker overwegen.
Workflowoptimalisatie met aliassen
Voor repetitieve taken verminderen shell-aliassen typwerk en contextswitching:
Zodra je je shell herlaadt, stopt
dsalle containers met één toetsaanslag—ideaal voor snelle opschoning.De 'ds'-alias gebruiken om alle draaiende containers in Ubuntu WSL te stoppen
Operationele best practices
Implementeer veilige shutdownroutines en regelmatige opschoning om je omgeving stabiel en performant te houden.
docker killvoor noodgevallen; voorkom dataconsistentieproblemen.-t/--time) aan op basis van de opruimbehoeften van je applicatie.docker system prune, zoals uitgelegd in Docker Prune: A Complete Guide with Hands-On Examples.Veelvoorkomende problemen oplossen
Zelfs eenvoudige commando’s kunnen haperen—zo pak je ze aan.
Zombieprocessen en verweesde volumes
Geforceerde beëindigingen kunnen achtergebleven processen of verweesde volumes nalaten, die hostresources en schijfruimte verbruiken. Opschonen doe je zo:
Dit verwijdert alle volumes waar geen container naar verwijst.
Controleer op aanhoudende Docker-daemonprocessen:
Beëindig handmatig eventuele achterblijvende
dockerd-childprocessen als ze blijven bestaan.Praktijkgeval: In een project gebruikte ik
docker killop een databasecontainer toen een migratie vastliep. De abrupte kill voorkwam dat de DB transactielogs kon wegschrijven, waardoor de InnoDB-tabellen corrupt raakten. We moesten backups terugzetten en binlogs opnieuw afspelen, wat meer dan 30 minuten downtime kostte. Voorkom dit doordocker stopmet een verlengde time-out te gebruiken of door juisteSIGTERM-handlers in je applicatie toe te voegen.Permission denied-fouten
Docker-commando’s uitvoeren zonder de juiste rechten veroorzaakt vaak fouten:
sudovoor je commando’s of draai als gebruiker in dedocker-groep.docker-groep en log opnieuw in:Na uit- en weer inloggen kun je Docker-commando’s zonder
sudouitvoeren. Zorg in een CI-omgeving dat de runner-gebruiker lid is van de Docker-groep om pipelinefouten te voorkomen.Windows-specifieke aandachtspunten
Gebruik in Windows PowerShell haakjes om subcommando’s en voer uit als Administrator:
PowerShell starten met verhoogde rechten voorkomt firewall- of toegangsproblemen. Als je TLS-handshakefouten ziet, controleer dan of de daemonconfiguratie van Docker Desktop overeenkomt met je PowerShell-omgeving.
Conclusie
Alle Docker-containers efficiënt stoppen bespaart tijd, spaart resources en minimaliseert menselijke fouten in je ontwikkelworkflow. Door te begrijpen hoe Docker signalen afhandelt, CLI-filters te benutten, Docker Compose te gebruiken en eenvoudige aliassen te maken, houd je een schone en voorspelbare omgeving.
Verken het traject Containerization and Virtualization with Docker and Kubernetes of de cursus Intermediate Docker om je containerisatie-expertise te verdiepen.
Veel plezier met containerizen—op naar schone, efficiënte Docker-workflows!