Cursus
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
SIGTERMnaar het hoofdproces van de container. - Wacht tot 10 seconden (instelbaar met
-t/--time). - Stuur
SIGKILLals 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_container
docker stop my_container
Dit stuurt SIGTERM naar my_container en wacht standaard 10 seconden voordat indien nodig SIGKILL wordt verzonden.
# Stop alle draaiende containers in één keer
docker stop $(docker ps -q)
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
Voor 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:
# Stuur SIGINT in plaats van SIGTERM
docker stop --signal=SIGINT my_container
Hiermee kunnen processen SIGINT opvangen voor aangepaste opruimacties.
# Kill alle containers met SIGUSR1
docker kill --signal=SIGUSR1 $(docker ps -q)
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:
# Stop containers die de image my_image:latest draaien
docker stop $(docker ps --filter "ancestor=my_image:latest" -q)
Bovenstaand commando stopt alleen containers op basis van my_image:latest, wat gerichte controle biedt in projecten met meerdere services.
Use-cases:
- Testcontainers stilleggen op imagetag (
--filter "ancestor=test:latest") - Containers stoppen op label (
--filter "label=env=dev")

Terminal-schermafbeelding van het gebruik van docker ps --filter
Geautomatiseerde opschoning met Docker Compose
Als je services zijn gedefinieerd in een docker-compose.yml-bestand, stopt één commando alle gerelateerde containers:
docker-compose stop
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:
# Voeg dit toe aan ~/.bashrc of ~/.zshrc
alias ds='docker stop $(docker ps -q)'
Zodra je je shell herlaadt, stopt ds alle 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.
- Implementeer signaalhandlers in je applicatiecode om verbindingen te sluiten en logs weg te schrijven.
- Bewaar
docker killvoor noodgevallen; voorkom dataconsistentieproblemen. - Pas wachttijden (
-t/--time) aan op basis van de opruimbehoeften van je applicatie. - Automatiseer opschoning na het stoppen met commando’s als
docker system prune, zoals uitgelegd in Docker Prune: A Complete Guide with Hands-On Examples. - 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:
# Verwijder zwevende volumes
docker volume prune
Dit verwijdert alle volumes waar geen container naar verwijst.
Controleer op aanhoudende Docker-daemonprocessen:
ps aux | grep dockerd
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
sudovoor je commando’s of draai als gebruiker in dedocker-groep. - Voeg je gebruiker toe aan de
docker-groep en log opnieuw in:
sudo usermod -aG docker $USER
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:
docker stop (docker ps -q)
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!
FAQs
Welke exitcode geeft docker stop terug?
Bij succes geeft docker stop 0 terug. Een niet-niet-nul-exitcode geeft aan dat één of meer containers niet konden worden gestopt.
Kan ik vooraf zien welke containers worden gestopt voordat ik het commando uitvoer?
Ja—voer docker ps of docker ps -q uit om draaiende containers te tonen en ID’s of namen te verifiëren voordat je docker stop uitvoert.
Hoe beïnvloeden herstartbeleidsregels gestopte containers?
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.
Beïnvloedt docker stop volumes of netwerken?
Nee, docker stop beïnvloedt gekoppelde volumes of netwerken niet—die blijven intact.
Kan ik sommige containers uitsluiten van stoppen?
Je kunt containers selectief stoppen door docker ps met filters te gebruiken of specifieke container-ID’s uit het commando te houden.
Welke tools helpen containers te beheren naast CLI-commando’s?
Tools zoals Portainer of Docker Desktop bieden GUI-beheer en maken containercontrole makkelijker voor beginners.
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.

