Docker System Prune: Dé complete gids voor efficiënt opruimen en beheren
Als je met containers werkt, breng je onvermijdelijk data samen: containers, images, netwerken en build-cache. Na verloop van tijd kan dit onnodige rommel worden die de opslag, laadsnelheden en zelfs je CI-pijplijnen beïnvloedt. docker system prune biedt een krachtige en veilige manier om dit op te ruimen, zodat je Docker-omgeving fris en snel blijft. In dit artikel nemen we je stap voor stap mee door wat docker system prune precies doet, welke opties er bestaan, en hoe je dit optimaal inzet in jouw workflow – van individuele ontwikkelingsrepetities tot geautomatiseerde CI/CD-pijplijnen.
Wat is docker system prune?
De docker system prune-opdracht is een geïntegreerde prune-oplossing in Docker die ongebruikte data opruimt. In de basis verwijdert het onbruikte data zoals:
- gestopte containers
- niet-gebruikte netwerken
- dangling images (beelden die aan geen container gekoppeld zijn)
- build-cache
Met de parameter --volumes kun je ook ongebruikte volumes verwijderen. Het doel van docker system prune is om de opslag efficiënt te beheren en cache- of leftovers die geen activiteit meer hebben, te verwijderen. Dit verlaagt de schijfruimte die Docker inneemt en kan de algehele performance verbeteren, zeker in ontwikkel-/testomgevingen die snel wisselen tussen verschillende projecten.
Waarom en wanneer gebruik je docker system prune?
Het gebruik van docker system prune is vooral handig in drie scenario’s: ruimtebevordering, overzichtelijkheid en performance. Hieronder bespreken we elk scenario en geven concrete signalen wanneer je mogelijk moet opruimen.
Ruimte vrijmaken
Wanneer je opslag vol begint te raken of je Docker-host markeert dat er weinig schijfruimte beschikbaar is, kan pruning helpen. Vooral onbruikte images en build-cache nemen onnodige ruimte in beslag. Door regelmatig te prune, hou je een gezonde opslagbalans zonder handmatige verwijderacties.
Overzicht en beheersbaarheid
Na verloop van tijd kunnen containers en netwerken ontstaan die nergens meer toe dienen. Het opruimen geeft een duidelijker beeld van wat er nog actief is en wat verwijderd kan worden. Dit vereenvoudigt beheer en reduces risk op foutieve verwijderingen van essentiële data.
Performance en herstarten van CI/CD
In CI/CD-pijplijnen of lokale ontwikkelomgevingen kan buildup van cache en oude images de build-tijden beïnvloeden. Door docker system prune in een gecontroleerde en geplande run toe te passen, blijven builds voorspelbaar en sneller.
De werking en alle opties van docker system prune
Het gebruik van docker system prune kent verschillende opties die bepalen wat er uiteindelijk verwijderd wordt en hoe streng de opruiming is. Hieronder vind je een overzicht van de belangrijkste opties met korte uitleg en praktische voorbeelden.
Basiscommando en standaardgedrag
Het basiscommando zonder opties voert een prune uit en vraagt om bevestiging bij het verwijderen. Je kunt het ook direct forceren met --force.
docker system prune
Wat gebeurt er standaard?
- gestopte containers worden verwijderd
- niet-gebruikte netwerken worden verwijderd
- dangling images worden verwijderd
- build-cache blijft behouden
Nieuwe optie: -a / –all
Met --all of -a verwijder je ook niet-dangling images die mogelijk nog referenties hebben maar niet langer in gebruik zijn door containers.
docker system prune --all
Belangrijk: dit kan meer data verwijderen dan alleen dangling images. Controleer altijd wat er potentieel verwijderd kan worden.
Volumes prune met –volumes
Als je ook ongebruikte volumes wilt verwijderen, voeg je --volumes toe. Let op: volumes kunnen persisteren data bevatten; zorg dat geen belangrijke data verloren gaat.
docker system prune --volumes
Filters: fijnmazige controle met –filter
Met --filter kun je de prune beperken op basis van criteria zoals tijd of labels. Voorbeelden:
docker system prune --filter "until=24h"
Verwijdert data ouder dan 24 uur. Andere bruikbare filters zijn onder meer label en until met specifieke waarden.
docker system prune --filter "until=72h" --filter "label.type=temp"
Bevestiging uitschakelen met -f / –force
Als je prune wilt automatiseren of in een script draait, kun je de interactieve bevestiging uitschakelen met:
docker system prune -f
Praktische stappen: van planning tot uitvoering
Hieronder vind je een praktisch stappenplan om docker system prune veilig in te zetten, met aandacht voor back-ups en risico’s.
1. Voorbereiding en inventaris
Kijk eerst wat er aanwezig is en welke data er mogelijk verwijderd kan worden. Gebruik:
docker system df
Deze opdracht toont de schijfruimte die Docker gebruikt, opgesplitst per onderdeel (containers, images, volumes, build cache).
2. Inspecteer voordat je pruneert
Bekijk welke containers en volumes actief zijn en welke mogelijk ongebruikt zijn. Een combinatie van inspectie-commando’s helpt:
docker ps -a
docker images -a
docker volume ls
Zo krijg je een duidelijk beeld voordat je iets verwijdert.
3. Uitvoeren met de juiste opties
Wil je alleen ongebruikte data verwijderen zonder volumes, gebruik dan:
docker system prune
Wil je ook volumes verwijderen en images behalve dangling? Gebruik:
docker system prune --all --volumes
4. Verifiëren na prune
Controleer na afloop opnieuw docker system df en controleer of de benodigde containers en volumes nog intact zijn. Dit zal helpen om zeker te zijn dat de prune niet per ongeluk te veel heeft verwijderd.
5. Regelmatige integratie in workflow
Plan automatisering op basis van onderhoudsschema’s, bijvoorbeeld tijdens daluren of in CI-pijplijnen na succesvolle builds die niet langer referenties hebben. Gebruik een konfiguratie die aansluit bij je teamwerk en beveiligingseisen.
Wat wordt er precies verwijderd bij docker system prune?
Het is cruciaal om te weten wat er wel en niet verwijderd wordt, zodat je geen noodzakelijke data kwijtraakt. Hieronder geven we een duidelijke uitleg per component.
Gestopte containers
Gestopte containers worden verwijderd. Dit betekent dat alles wat niet actief draait, uit de schijf verdwijnt, tenzij er belangrijke gegevens in een volume zijn opgeslagen of de container data persistent heeft gemaakt buiten de container zelf.
Netwerken
Netwerken die niet langer door containers worden gebruikt, worden verwijderd. Dit voorkomt rommel in je netwerkconfiguratie.
Dangling images
Dangling images zijn images zonder tag die nergens aan gekoppeld zijn. Ze ontstaan vaak tijdens builds en kunnen worden verwijderd zonder impact op lopende containers.
Build-cache
Build-cache vermindert de tijd die nodig is voor toekomstige builds, maar kan ook ruimte vastzetten. Pruning van de build-cache kan nuttig zijn als je regelmatig bouwfouten of lange builds ervaart.
Volumes
Volumes bevatten data die door containers wordt gebruikt. Alleen ongebruikte volumes (die niet meer gekoppeld zijn aan containers) worden verwijderd bij gebruik van --volumes. Wees hier voorzichtig als je belangrijke data hebt opgeslagen in volumes.
Beveiliging, back-ups en best practices
Voordat je met pruning begint, dien je rekening te houden met beveiliging en data-integriteit. Hieronder staan een reeks best practices die je helpen om veilig en effectief te prune.
Back-ups en data-inventaris
Maak regelmatig back-ups van cruciale data die in volumes staat opgeslagen. Controleer of er gegevens bestaan die je niet wilt verliezen. Een eenvoudige regel: als data in volumes zit die niet door een container actief gebruikt wordt, beschouw deze als potentieel riskant bij pruning.
Afspraken in teams en documentatie
Leg vast wanneer en hoe docker system prune ingezet wordt en wie de eindverantwoordelijkheid draagt. Documenteer de gebruikte filters, inclusief welke volumes en images mogelijk verwijderd worden, zodat teams weten wat er gebeurt bij automatisering.
Veiligheidsmaatregelen in CI/CD
In CI/CD-omgevingen is pruning vaak nuttig, maar ook riskant als build-artifacts of testdata op korte termijn herbruikt moeten worden. Gebruik duidelijke gate- en rollback-strategieën, en voer pruning uit in een gecontroleerde fase na het voltooien van builds en tests, niet tijdens kritieke takes.
Dieper duiken: geavanceerde filters en tips
Voor gevorderde gebruikers biedt docker system prune meer granulariteit via filters. Hier zijn enkele nuttige patronen en tips om het instrument beter af te stemmen op jouw situatie.
Totale pruning vs. doelgerichte pruning
Gebruik docker system prune als algemene reiniging. Voor gerichte opruimingen kies je de component-specifieke commando’s:
docker container prune
docker image prune
docker volume prune
Fijnmazige tijdfilters
Je kunt data verwijderen die ouder is dan een bepaalde periode. Dit is bijzonder handig als je regelmatig oude builds hebt die nooit meer actief gebruikt worden.
docker system prune --filter "until=168h"
168 uur is een week. Pas dit aan op jouw release- of onderhoudsschema.
Label-gebaseerde filters
Als je labels gebruikt om containers, images of volumes te categoriseren, kun je prune beperken tot data met een specifiek label. Bijvoorbeeld:
docker system prune --filter "label.environment=dev"
Combineren van filters
Combineren van meerdere filters geeft je maximale controle:
docker system prune --filter "until=48h" --filter "label.cleanup=true"
Veelgestelde vragen over docker system prune
Is docker system prune veilig in een productieomgeving?
Over het algemeen is prune bedoeld voor ontwikkel- en testomgevingen. In productieomgevingen moet je extra voorzichtig zijn en backups maken, aangezien een onbedoelde verwijdering van data impact kan hebben op runtime-gegevens en services.
Kan ik een prune automatiseren zonder menselijke tussenkomst?
Ja, door docker system prune -f te gebruiken kun je pruning automatiseren in een script of CI-pijplijn. Zorg wel voor duidelijke logging en een rollback-mogelijkheid als er toch data verwijderd wordt die nodig is.
Wat is het verschil tussen docker system prune en de afzonderlijke prune-commando’s?
docker system prune is een alles-in-één opruimactie die meerdere categorieën tegelijk doorloopt. De afzonderlijke commando’s zoals docker container prune, docker image prune, en docker volume prune geven meer controle als je alleen een specifieke categorie wilt opruimen.
Praktische voorbeelden en scenario’s
Scenario A: ontwikkelmachine schoonmaken na een lange sprint
Na een intensieve sprint kunnen tientallen containers en tientallen afbeeldingen achterblijven. Gebruik:
docker system prune --all --volumes -f
Dit verwijdert alle ongebruikte data inclusief volumes. Controleer daarna via docker system df of er nog ruimte vrij is.
Scenario B: prune met tijdsfilters in een CI-job
Beperk prune tot data ouder dan 7 dagen en met een specifiek label:
docker system prune --filter "until=168h" --filter "label.cleanup=true" -f
Scenario C: altijd veilige baseline prune op development servers
Bewaar belangrijkste images en containers, prune alleen dangling images en ongebruikte netwerken:
docker system prune --all=false -f
Conclusie: goed voorbereid prune voor een efficiënte Docker-omgeving
docker system prune is een krachtig hulpmiddel als je bekend bent met de implicaties en de juiste checks toepast. Met de juiste combinatie van opties, filters en procesmatige planning kun je ruimte vrijmaken, de prestaties verbeteren en de beheersbaarheid vergroten zonder onbedoelde gevolgen. Door regelmatig te evalueren wat er wordt verwijderd en door back-ups en documentatie serieus te nemen, houd je jouw Docker-omgeving gezond en toekomstbestendig. Of je nu een individuele ontwikkelaar bent of deel uitmaakt van een groter team dat draait op Docker, docker system prune biedt een robuuste basis voor onderhoud en opschoning op een verantwoorde manier.
Samenvatting: kernpunten over docker system prune
- docker system prune verwijdert ongebruikte data: gestopte containers, ongebruikte netwerken, dangling images en build-cache.
- Met –all kun je ook niet-dangling images verwijderen; met –volumes ook ongebruikte volumes.
- Filters zoals –filter “until=” en label-gebaseerde filters bieden fijne controle.
- Gebruik -f om automatisering mogelijk te maken, maar zorg voor backups en duidelijke logging.
- Beheer zorgvuldig om dataverlies te voorkomen; documenteer policies en procedures.
Door een gestructureerde aanpak te volgen en docker system prune slim in te zetten, blijf je Docker-omgeving efficiënt, overzichtelijk en robuust voor toekomstige projecten en teams. Een goede prune-routine is geen eenmalige actie, maar een integraal onderdeel van jouw_DEVOPS- en ontwikkelworkflow.