Docker Prune: een complete gids met praktische voorbeelden
Verwijder ongebruikte containers, images, volumes en netwerken veilig met één shell-commando. Houd je systeem opgeruimd en win schijfruimte terug door ongebruikte Docker-resources te verwijderen.
Als je dagelijks met Docker werkt, weet je hoe snel het schijfruimte kan opslokken.
Na verloop van tijd stapelt je systeem ongebruikte images, containers, volumes en netwerken op. Die staan grotendeels stil, nemen waardevolle opslag in en kunnen je zelfs in de weg zitten bij je huidige project. Gelukkig biedt Docker ingebouwde opruimcommando’s waarmee je onnodige resources eenvoudig verwijdert.
Deze opruimcommando’s maken deel uit van de docker prune-familie, en vandaag leer je er alles over. Ze worden al snel je favoriete oplossing om schijfruimte vrij te maken.
Laten we beginnen met een korte overzicht voordat we in praktische voorbeelden duiken.
De term "Docker Prune" verwijst doorgaans naar een set commando’s die je helpen ongebruikte en onnodige Docker-resources te verwijderen.
Na verloop van tijd, zeker als je aan meerdere projecten werkt, maak je talloze images aan, start je containers en zet je volumes en netwerken op. Dit alles stapelt zich op je systeem op en neemt een aanzienlijke hoeveelheid schijfruimte in. Het doel van docker prune is die rommel op te ruimen en opslag terug te winnen.
Dat gezegd hebbende, er zit meer achter docker prune dan je op het eerste gezicht zou denken.
Het is niet zomaar één commando dat je kunt draaien. Nou ja, dat kan, maar soms heb je fijngranulaire controle nodig over wat er wordt verwijderd. Daar komt dit artikel om de hoek kijken. Het laat je zien hoe je pruning effectief beheert, zodat je alleen verwijdert wat je wilt, en hoe je veilig kunt oefenen om te voorkomen dat je per ongeluk belangrijke data verwijdert.
Het is ook goed om te weten dat prune-commando’s alleen resources verwijderen die niet actief in gebruik zijn. Images, volumes en netwerken waarnaar wordt verwezen door draaiende containers worden niet verwijderd. Met andere woorden: pruning verstoort actieve workloads niet.
In de volgende sectie lopen we de verschillende soorten prune-commando’s door en leggen we uit hoe ze in je workflow passen.
Alle Docker Prune-commando’s met hands-on voorbeelden
Docker biedt meerdere prune-commando’s waarmee je ongebruikte resources afzonderlijk of allemaal tegelijk kunt opruimen. In deze sectie leer je erover—zowel in theorie als via praktische voorbeelden.
docker system prune
Dit is het meest complete commando om schijfruimte terug te winnen. Het verwijdert in één keer alle ongebruikte containers, netwerken, images en buildcache.
Zoek je een snelle manier om met één commando schijfruimte vrij te maken, dan is dit wat je nodig hebt.
Je kunt opties meegeven aan het docker system prune-commando:
-a of --all verwijdert alle ongebruikte images in plaats van alleen dangling exemplaren (images zonder tag of referentie door een container).
--filter laat je filterwaarden opgeven.
-f of --force slaat de bevestigingsprompt over.
--volumes pruned ook anonieme volumes naast containers, netwerken, images en buildcache.
Standaard vraagt docker system prune om bevestiging, aangezien het een potentieel destructieve handeling is:
Afbeelding 1 - Docker system prune-bevestigingsprompt
Om de prompt over te slaan en alle ongebruikte images, containers, netwerken en volumes met één commando te verwijderen, voer je uit:
Afbeelding 2 - Alles verwijderen met één docker system prune-commando
Maar wat als je meer fijnmazige controle nodig hebt? Dat behandelen we nu.
docker container prune
Kort gezegd: dit commando verwijdert alle gestopte containers.
Gestopte containers blijven op je systeem staan totdat je ze handmatig verwijdert. Ze kunnen schijfruimte innemen en lastig te herkennen zijn, tenzij je een tool als het Docker Desktop-dashboard gebruikt.
Net als docker system prune ondersteunt dit commando opties:
--filter laat je sleutel-waardeparen opgeven om te bepalen welke containers worden verwijderd.
-f of --force slaat de bevestigingsprompt over.
Hier is een lijst met niet-draaiende containers:
Afbeelding 3 - Lijst met niet-draaiende containers
Om code-server (en elke andere gestopte container) te verwijderen, voer je uit:
Dit vraagt niet om bevestiging en binnen enkele seconden zie je zoiets als dit:
Afbeelding 4 - Uitvoerbericht van container-pruning
En zo zijn er geen gestopte containers meer:
Afbeelding 5 - Lijst met niet-draaiende containers (2)
Laten we nu de ongebruikte images aanpakken.
docker image prune
Net als het vorige commando verwijdert docker image prune ongebruikte images.
Standaard verwijdert het alleen dangling images—images zonder tag en niet gekoppeld aan een container. Je kunt een optionele vlag gebruiken om alle ongebruikte images te verwijderen, niet alleen de dangling exemplaren.
Hier is een lijst met beschikbare opties
-a of --all verwijdert alle ongebruikte images in plaats van alleen dangling exemplaren.
--filter laat je sleutel-waardeparen opgeven om te bepalen welke images worden verwijderd.
-f of --force slaat de bevestigingsprompt over.
En nu in de praktijk!
Hier is een lijst met images die momenteel op het systeem staan:
Afbeelding 6 - Lijst met Docker-images
Om ze allemaal met één commando te verwijderen, voer je uit:
Daarna blijven er in Docker Desktop geen images over:
Afbeelding 8 - Lijst met Docker-images (2)
Vervolgens pakken we de ongebruikte volumes aan.
docker volume prune
Zoals de naam al aangeeft, verwijdert het commando docker volume prune alle ongebruikte lokale volumes. Met andere woorden: het verwijdert volumes waar geen enkele container naar verwijst.
Standaard verwijdert het commando alleen anonieme volumes - naamloze volumes die Docker aanmaakt wanneer een container start. Om expliciet benoemde volumes te verwijderen, moet je een extra optie meegeven.
Dit zijn de beschikbare opties:
-a of --all verwijdert alle ongebruikte volumes in plaats van alleen anonieme.
--filter laat je sleutel-waardeparen opgeven om te bepalen welke volumes worden verwijderd.
-f of --force slaat de bevestigingsprompt over.
Op ons systeem hebben we één door de gebruiker aangemaakt volume uit een docker-compose.yml-bestand:
Afbeelding 9 - Lijst met Docker-volumes
Het volgende commando verwijdert alle lokale volumes:
Na uitvoering zie je een uitvoer die hierop lijkt:
Afbeelding 10 - Uitvoerbericht van volume-pruning
Nu zijn er geen volumes meer over:
Afbeelding 11 - Lijst met Docker-volumes (2)
Tot slot bekijken we hoe je ongebruikte netwerken verwijdert.
docker network prune
Wanneer Docker-containers met elkaar communiceren, gebruiken ze vaak door de gebruiker gedefinieerde netwerken. Maar die netwerken blijven meestal op je systeem staan zodra die containers zijn verwijderd.
Het commando docker network prune verwijdert netwerken die niet langer door een container worden gebruikt.
Net als de andere prune-commando’s heeft het een paar opties:
--filter laat je sleutel-waardeparen opgeven om te bepalen welke netwerken worden verwijderd.
-f of --force slaat de bevestigingsprompt over.
In tegenstelling tot images, containers of volumes kun je netwerken niet visueel inspecteren via Docker Desktop, dus zul je met de commandline moeten werken. Hier is een lijst met beschikbare netwerken:
Afbeelding 12 - Lijst met Docker-netwerken
Om alle netwerken te verwijderen die niet bij de standaard Docker-installatie horen, voer je uit:
Na uitvoering van het commando zie je een uitvoer zoals deze:
Afbeelding 13 - Uitvoerbericht van network-pruning
Alle netwerken die gekoppeld waren aan eerder draaiende containers zijn nu weg:
Afbeelding 14 - Lijst met Docker-netwerken
Let wel: de drie overgebleven netwerken zijn essentieel voor de goede werking van Docker en kunnen niet worden verwijderd.
En dat was het voor het basisgebruik van docker prune-commando’s! Hierna behandelen we geavanceerde onderwerpen, zoals veilig gebruik en best practices voor productie- en gevoelige omgevingen.
Docker Prune veilig gebruiken
De docker prune-commando’s helpen snel schijfruimte terug te winnen, maar ze moeten met voorzichtigheid worden gebruikt, vooral in productieomgevingen.
Het per ongeluk verwijderen van belangrijke containers, images of volumes kan leiden tot dataverlies en kritieke workflows verstoren. Om dit te voorkomen is het het beste om te begrijpen wat er wordt verwijderd voordat je een prune-commando uitvoert.
Deze sectie legt belangrijke voorzorgsmaatregelen uit voor het veilig uitvoeren van docker prune.
Begrijpen wat er wordt verwijderd
De prune-commando’s zijn ontworpen om alleen resources te verwijderen die niet actief in gebruik zijn.
Zo verwijdert docker image prune alleen dangling images, en docker volume prune alleen volumes die niet aan containers zijn gekoppeld. Maar met opties als -a -f verwijder je alle images of volumes zonder om bevestiging te vragen.
Bovendien zijn afhankelijkheden in complexe omgevingen makkelijk over het hoofd te zien, dus dubbelchecken vóór het prunen is altijd een goed idee.
Voordat je een prune-commando draait, moet je je systeem inspecteren om te zien welke resources momenteel in gebruik zijn. Er zijn meerdere manieren om dat te doen; we behandelen de meest gebruikelijke in deze sectie.
Gebruik dit commando om alle containers te bekijken, inclusief gestopte:
Bekijk deze uitvoer zorgvuldig om te zorgen dat er geen kritieke resources per ongeluk worden verwijderd.
Dry run voor de veiligheid
Helaas heeft Docker nog steeds geen ingebouwde optie voor een dry run van pruning-commandos, ook al is die jaren geleden aangevraagd.
Daarom moet je resources handmatig inspecteren met de commando’s uit de vorige sectie voordat je een prune-commando draait.
Werk je in een gevoelige omgeving waar datapersistentie cruciaal is, maak dan altijd een back-up voordat je prune-commando’s draait die volumes beïnvloeden.
Natuurlijk zijn dit voorzorgsmaatregelen, maar we hopen snel een dry-runoptie te zien.
Best practices voor Docker Prune
Om je Docker-omgeving vrij te houden van onnodige rommel is het belangrijk om prune-commando’s regelmatig te draaien—je kunt ze zelfs automatiseren.
Deze sectie leidt je door best practices voor het draaien van docker prune-commando’s in productieomgevingen.
Gebruik docker prune regelmatig
Na verloop van tijd verzamelt Docker ongebruikte images, gestopte containers en onnodige volumes—die allemaal flink wat schijfruimte innemen.
Regelmatig prunen houdt je omgeving schoon en voorkomt buitensporig schijfgebruik. Je zou deze commando’s moeten opnemen in je onderhoudsschema.
Om de paar weken is een goed startpunt, maar als je setup vaak containers aanmaakt en verwijdert, kies dan een hogere frequentie.
Wees voorzichtig in productie
Werk in een productieomgeving vereist extra voorzichtigheid, en Docker-pruning is daarop geen uitzondering.
Een moment van onoplettendheid kan leiden tot downtime of dataverlies, en dat wil je niet op je geweten hebben. Inspecteer vóór docker prune in productie altijd de systeemresources met docker ps -a, docker images en docker volume ls, zoals in de vorige sectie uitgelegd.
Daarnaast is het verstandig om specifieke prune-commando’s te gebruiken in plaats van het allesomvattende docker system prune, omdat herstellen van onbedoelde verwijderingen dan vaak eenvoudiger is.
Automatiseer docker prune
Een andere goede gewoonte is het stroomlijnen van opruimwerk door docker prune-commando’s te automatiseren met geplande taken.
Op Linux kun je een cronjob instellen om de commando’s periodiek uit te voeren, terwijl je op Windows Taakplanner kunt gebruiken voor vergelijkbare automatisering. Zo blijft je systeem netjes zonder handmatige tussenkomst. Let er in productie wel op dat geautomatiseerd prunen kritieke workloads niet verstoort.
Deze cronjob op Linux draait bijvoorbeeld elke zondag om middernacht een allesomvattend prune-commando:
De docker prune-commando’s zijn een vaste waarde om schijfruimte terug te winnen, maar ze zijn niet altijd voldoende om genoeg ruimte te garanderen voor het pullen van nieuwe images of het draaien van nieuwe containers.
Bovendien kun je per ongeluk belangrijke resources verwijderen, dus het is cruciaal om herstelstrategieën te bespreken.
Beide onderwerpen komen in deze sectie aan bod.
Tegen schijfruimteproblemen aanlopen
Docker-images kunnen groot zijn—wij hadden er onlangs één van meer dan 13 GB—en we weten zeker dat er nog grotere bestaan. Dus zelfs na docker prune kan het zijn dat je systeem nog steeds weinig schijfruimte heeft.
Om te zien precies hoeveel ruimte wordt gebruikt door images, containers en volumes, draai je dit commando:
Wanneer je schijfruimte wilt terugwinnen met docker prune-commando’s, voeg dan de vlag -a toe om alle images, volumes of containers te verwijderen—niet alleen dangling of anonieme. Houd uiteraard de mogelijke nadelen van deze aanpak in gedachten.
Als het schijfruimteprobleem aanhoudt, is je enige optie om de beschikbare schijfruimte te vergroten.
Herstellen na per ongeluk verwijderen
Herstellen is makkelijker gezegd dan gedaan—daarom raden we aan te begrijpen wat er door pruning wordt verwijderd voordat je het daadwerkelijke commando draait.
Mocht je toch in een situatie belanden waarin je per ongeluk belangrijke containers, images of volumes hebt gepruned, begin dan met het controleren van logs om te achterhalen wat er is verwijderd.
pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
/usr/bin/log stream --style syslog --level=debug --color=always --predicate"$pred"
/usr/bin/log show --debug--info--style syslog --last 30m --predicate"$pred">/tmp/logs.txtMogelijk gemaakt door
Met deze commando’s sla je de laatste 30 minuten aan Docker-gerelateerde logs op in /tmp/logs.txt. Inspecteer deze logs om te bepalen welke containers of images zijn verwijderd.
Voor verwijderde images kun je ze doorgaans opnieuw pullen van een registry zoals Docker Hub. Een commando als dit volstaat:
Alternatief kun je herstellen vanaf back-ups als die beschikbaar zijn; daarmee kun je zowel volume- als containerdata terugzetten. Overweeg in de toekomst tools voor volumesnapshots om dataverlies te voorkomen.
De beste strategie blijft echter: inspecteer de resources die zullen worden verwijderd vóórdat je een prune-commando draait, en ga alleen door als je zeker weet dat dit je workflow niet beïnvloedt.
Docker Prune samengevat
Kortom, de docker prune-familie van commando’s is een krachtige manier om schijfruimte terug te winnen, maar brengt het risico met zich mee dat je per ongeluk resources verwijdert die je nodig hebt, met dataverlies tot gevolg. Dat risico is nog groter met de optionele vlaggen -a -f, die alles geforceerd verwijderen.
Toch blijft pruning een beproefde methode om je systeem schoon en georganiseerd te houden.
Wees gewoon voorzichtig, vooral in productieomgevingen. Gebruik commando’s als docker ps -a, docker images en docker volume ls vóór het prunen om alle containers, images en volumes te tonen. Draai het prune-commando pas nadat je zeker weet dat je akkoord bent met het verwijderen van de vermelde resources (ervan uitgaande dat ze niet door een draaiende container worden gebruikt).
Wil je meer leren over Docker, containerisatie en orkestratie, bekijk dan deze cursussen op DataCamp:
In het algemeen wel, maar gebruik het met voorzichtigheid. Het verwijdert alleen resources die niet in gebruik zijn, maar het zonder controle draaien kan leiden tot onbedoelde verwijderingen, zeker in productieomgevingen. Extra vlaggen zoals -a -f verwijderen geforceerd alle ongebruikte resources.
Wat is het verschil tussen docker prune en docker rm?⌄
docker prune verwijdert alle ongebruikte resources van een specifiek type, terwijl docker rm wordt gebruikt om specifieke containers of images handmatig te verwijderen.
Verwijdert docker system prune alles? ⌄
Nee, docker system prune verwijdert ongebruikte containers, netwerken, images en buildcache, maar verwijdert geen benoemde volumes tenzij de vlag --volumes is opgegeven na het commando.
Wat is een dangling image in Docker? ⌄
Een dangling image is een image zonder tag of referentie door een container. Dit zijn meestal overgebleven tussenliggende images van builds en kunnen veilig worden verwijderd met het commando docker image prune.
Senior Data Scientist, gevestigd in Kroatië. Top Tech-schrijver met meer dan 700 gepubliceerde artikelen en meer dan 10 miljoen weergaven. Auteur van het boek Machine Learning Automation with TPOT.
Als je dagelijks met Docker werkt, weet je hoe snel het schijfruimte kan opslokken.
Na verloop van tijd stapelt je systeem ongebruikte images, containers, volumes en netwerken op. Die staan grotendeels stil, nemen waardevolle opslag in en kunnen je zelfs in de weg zitten bij je huidige project. Gelukkig biedt Docker ingebouwde opruimcommando’s waarmee je onnodige resources eenvoudig verwijdert.
Deze opruimcommando’s maken deel uit van de
docker prune-familie, en vandaag leer je er alles over. Ze worden al snel je favoriete oplossing om schijfruimte vrij te maken.Laten we beginnen met een korte overzicht voordat we in praktische voorbeelden duiken.
Ben je nieuw met Docker? Bekijk onze guide over Docker vanaf nul leren voor data professionals om snel op stoom te komen.
Wat is Docker Prune?
De term "Docker Prune" verwijst doorgaans naar een set commando’s die je helpen ongebruikte en onnodige Docker-resources te verwijderen.
Na verloop van tijd, zeker als je aan meerdere projecten werkt, maak je talloze images aan, start je containers en zet je volumes en netwerken op. Dit alles stapelt zich op je systeem op en neemt een aanzienlijke hoeveelheid schijfruimte in. Het doel van
docker pruneis die rommel op te ruimen en opslag terug te winnen.Dat gezegd hebbende, er zit meer achter
docker prunedan je op het eerste gezicht zou denken.Het is niet zomaar één commando dat je kunt draaien. Nou ja, dat kan, maar soms heb je fijngranulaire controle nodig over wat er wordt verwijderd. Daar komt dit artikel om de hoek kijken. Het laat je zien hoe je pruning effectief beheert, zodat je alleen verwijdert wat je wilt, en hoe je veilig kunt oefenen om te voorkomen dat je per ongeluk belangrijke data verwijdert.
Het is ook goed om te weten dat prune-commando’s alleen resources verwijderen die niet actief in gebruik zijn. Images, volumes en netwerken waarnaar wordt verwezen door draaiende containers worden niet verwijderd. Met andere woorden: pruning verstoort actieve workloads niet.
In de volgende sectie lopen we de verschillende soorten prune-commando’s door en leggen we uit hoe ze in je workflow passen.
Docker aan je cv of portfolio toevoegen? Deze 10 Docker-projectideeën maken je klaar voor de arbeidsmarkt.
Alle Docker Prune-commando’s met hands-on voorbeelden
Docker biedt meerdere
prune-commando’s waarmee je ongebruikte resources afzonderlijk of allemaal tegelijk kunt opruimen. In deze sectie leer je erover—zowel in theorie als via praktische voorbeelden.docker system prune
Dit is het meest complete commando om schijfruimte terug te winnen. Het verwijdert in één keer alle ongebruikte containers, netwerken, images en buildcache.
Zoek je een snelle manier om met één commando schijfruimte vrij te maken, dan is dit wat je nodig hebt.
Je kunt opties meegeven aan het
docker system prune-commando:-aof--allverwijdert alle ongebruikte images in plaats van alleen dangling exemplaren (images zonder tag of referentie door een container).--filterlaat je filterwaarden opgeven.-fof--forceslaat de bevestigingsprompt over.--volumespruned ook anonieme volumes naast containers, netwerken, images en buildcache.Standaard vraagt
docker system pruneom bevestiging, aangezien het een potentieel destructieve handeling is:Afbeelding 1 - Docker system prune-bevestigingsprompt
Om de prompt over te slaan en alle ongebruikte images, containers, netwerken en volumes met één commando te verwijderen, voer je uit:
Afbeelding 2 - Alles verwijderen met één docker system prune-commando
Maar wat als je meer fijnmazige controle nodig hebt? Dat behandelen we nu.
docker container prune
Kort gezegd: dit commando verwijdert alle gestopte containers.
Gestopte containers blijven op je systeem staan totdat je ze handmatig verwijdert. Ze kunnen schijfruimte innemen en lastig te herkennen zijn, tenzij je een tool als het Docker Desktop-dashboard gebruikt.
Net als
docker system pruneondersteunt dit commando opties:--filterlaat je sleutel-waardeparen opgeven om te bepalen welke containers worden verwijderd.-fof--forceslaat de bevestigingsprompt over.Hier is een lijst met niet-draaiende containers:
Afbeelding 3 - Lijst met niet-draaiende containers
Om
code-server(en elke andere gestopte container) te verwijderen, voer je uit:Dit vraagt niet om bevestiging en binnen enkele seconden zie je zoiets als dit:
Afbeelding 4 - Uitvoerbericht van container-pruning
En zo zijn er geen gestopte containers meer:
Afbeelding 5 - Lijst met niet-draaiende containers (2)
Laten we nu de ongebruikte images aanpakken.
docker image prune
Net als het vorige commando verwijdert
docker image pruneongebruikte images.Standaard verwijdert het alleen dangling images—images zonder tag en niet gekoppeld aan een container. Je kunt een optionele vlag gebruiken om alle ongebruikte images te verwijderen, niet alleen de dangling exemplaren.
Hier is een lijst met beschikbare opties
-aof--allverwijdert alle ongebruikte images in plaats van alleen dangling exemplaren.--filterlaat je sleutel-waardeparen opgeven om te bepalen welke images worden verwijderd.-fof--forceslaat de bevestigingsprompt over.En nu in de praktijk!
Hier is een lijst met images die momenteel op het systeem staan:
Afbeelding 6 - Lijst met Docker-images
Om ze allemaal met één commando te verwijderen, voer je uit:
In de terminal zie je een uitvoer zoals deze:
Afbeelding 7 - Uitvoerbericht van image-pruning
Daarna blijven er in Docker Desktop geen images over:
Afbeelding 8 - Lijst met Docker-images (2)
Vervolgens pakken we de ongebruikte volumes aan.
docker volume prune
Zoals de naam al aangeeft, verwijdert het commando
docker volume prunealle ongebruikte lokale volumes. Met andere woorden: het verwijdert volumes waar geen enkele container naar verwijst.Standaard verwijdert het commando alleen anonieme volumes - naamloze volumes die Docker aanmaakt wanneer een container start. Om expliciet benoemde volumes te verwijderen, moet je een extra optie meegeven.
Dit zijn de beschikbare opties:
-aof--allverwijdert alle ongebruikte volumes in plaats van alleen anonieme.--filterlaat je sleutel-waardeparen opgeven om te bepalen welke volumes worden verwijderd.-fof--forceslaat de bevestigingsprompt over.Op ons systeem hebben we één door de gebruiker aangemaakt volume uit een
docker-compose.yml-bestand:Afbeelding 9 - Lijst met Docker-volumes
Het volgende commando verwijdert alle lokale volumes:
Na uitvoering zie je een uitvoer die hierop lijkt:
Afbeelding 10 - Uitvoerbericht van volume-pruning
Nu zijn er geen volumes meer over:
Afbeelding 11 - Lijst met Docker-volumes (2)
Tot slot bekijken we hoe je ongebruikte netwerken verwijdert.
docker network prune
Wanneer Docker-containers met elkaar communiceren, gebruiken ze vaak door de gebruiker gedefinieerde netwerken. Maar die netwerken blijven meestal op je systeem staan zodra die containers zijn verwijderd.
Het commando
docker network pruneverwijdert netwerken die niet langer door een container worden gebruikt.Net als de andere prune-commando’s heeft het een paar opties:
--filterlaat je sleutel-waardeparen opgeven om te bepalen welke netwerken worden verwijderd.-fof--forceslaat de bevestigingsprompt over.In tegenstelling tot images, containers of volumes kun je netwerken niet visueel inspecteren via Docker Desktop, dus zul je met de commandline moeten werken. Hier is een lijst met beschikbare netwerken:
Afbeelding 12 - Lijst met Docker-netwerken
Om alle netwerken te verwijderen die niet bij de standaard Docker-installatie horen, voer je uit:
Na uitvoering van het commando zie je een uitvoer zoals deze:
Afbeelding 13 - Uitvoerbericht van network-pruning
Alle netwerken die gekoppeld waren aan eerder draaiende containers zijn nu weg:
Afbeelding 14 - Lijst met Docker-netwerken
Let wel: de drie overgebleven netwerken zijn essentieel voor de goede werking van Docker en kunnen niet worden verwijderd.
En dat was het voor het basisgebruik van
docker prune-commando’s! Hierna behandelen we geavanceerde onderwerpen, zoals veilig gebruik en best practices voor productie- en gevoelige omgevingen.Docker Prune veilig gebruiken
De
docker prune-commando’s helpen snel schijfruimte terug te winnen, maar ze moeten met voorzichtigheid worden gebruikt, vooral in productieomgevingen.Het per ongeluk verwijderen van belangrijke containers, images of volumes kan leiden tot dataverlies en kritieke workflows verstoren. Om dit te voorkomen is het het beste om te begrijpen wat er wordt verwijderd voordat je een prune-commando uitvoert.
Deze sectie legt belangrijke voorzorgsmaatregelen uit voor het veilig uitvoeren van
docker prune.Begrijpen wat er wordt verwijderd
De
prune-commando’s zijn ontworpen om alleen resources te verwijderen die niet actief in gebruik zijn.Zo verwijdert
docker image prunealleen dangling images, endocker volume prunealleen volumes die niet aan containers zijn gekoppeld. Maar met opties als-a -fverwijder je alle images of volumes zonder om bevestiging te vragen.Bovendien zijn afhankelijkheden in complexe omgevingen makkelijk over het hoofd te zien, dus dubbelchecken vóór het prunen is altijd een goed idee.
Voordat je een
prune-commando draait, moet je je systeem inspecteren om te zien welke resources momenteel in gebruik zijn. Er zijn meerdere manieren om dat te doen; we behandelen de meest gebruikelijke in deze sectie.Gebruik dit commando om alle containers te bekijken, inclusief gestopte:
Je zou een uitvoer moeten zien die hierop lijkt:
Afbeelding 15 - Lijst met alle Docker-containers
Gebruik op vergelijkbare wijze dit commando om alle images te tonen, inclusief ongebruikte:
De uitvoer is vergelijkbaar gestructureerd als hierboven:
Afbeelding 16 - Lijst met alle Docker-images
Om volumes te controleren, voer je dit commando uit om alle volumes te tonen:
Afbeelding 17 - Lijst met alle Docker-volumes
Bekijk deze uitvoer zorgvuldig om te zorgen dat er geen kritieke resources per ongeluk worden verwijderd.
Dry run voor de veiligheid
Helaas heeft Docker nog steeds geen ingebouwde optie voor een dry run van pruning-commandos, ook al is die jaren geleden aangevraagd.
Daarom moet je resources handmatig inspecteren met de commando’s uit de vorige sectie voordat je een prune-commando draait.
Werk je in een gevoelige omgeving waar datapersistentie cruciaal is, maak dan altijd een back-up voordat je prune-commando’s draait die volumes beïnvloeden.
Natuurlijk zijn dit voorzorgsmaatregelen, maar we hopen snel een dry-runoptie te zien.
Best practices voor Docker Prune
Om je Docker-omgeving vrij te houden van onnodige rommel is het belangrijk om
prune-commando’s regelmatig te draaien—je kunt ze zelfs automatiseren.Deze sectie leidt je door best practices voor het draaien van
docker prune-commando’s in productieomgevingen.Gebruik docker prune regelmatig
Na verloop van tijd verzamelt Docker ongebruikte images, gestopte containers en onnodige volumes—die allemaal flink wat schijfruimte innemen.
Regelmatig prunen houdt je omgeving schoon en voorkomt buitensporig schijfgebruik. Je zou deze commando’s moeten opnemen in je onderhoudsschema.
Om de paar weken is een goed startpunt, maar als je setup vaak containers aanmaakt en verwijdert, kies dan een hogere frequentie.
Wees voorzichtig in productie
Werk in een productieomgeving vereist extra voorzichtigheid, en Docker-pruning is daarop geen uitzondering.
Een moment van onoplettendheid kan leiden tot downtime of dataverlies, en dat wil je niet op je geweten hebben. Inspecteer vóór
docker prunein productie altijd de systeemresources metdocker ps -a,docker imagesendocker volume ls, zoals in de vorige sectie uitgelegd.Daarnaast is het verstandig om specifieke prune-commando’s te gebruiken in plaats van het allesomvattende
docker system prune, omdat herstellen van onbedoelde verwijderingen dan vaak eenvoudiger is.Automatiseer docker prune
Een andere goede gewoonte is het stroomlijnen van opruimwerk door
docker prune-commando’s te automatiseren met geplande taken.Op Linux kun je een cronjob instellen om de commando’s periodiek uit te voeren, terwijl je op Windows Taakplanner kunt gebruiken voor vergelijkbare automatisering. Zo blijft je systeem netjes zonder handmatige tussenkomst. Let er in productie wel op dat geautomatiseerd prunen kritieke workloads niet verstoort.
Deze cronjob op Linux draait bijvoorbeeld elke zondag om middernacht een allesomvattend prune-commando:
Problemen met Docker Prune oplossen
De
docker prune-commando’s zijn een vaste waarde om schijfruimte terug te winnen, maar ze zijn niet altijd voldoende om genoeg ruimte te garanderen voor het pullen van nieuwe images of het draaien van nieuwe containers.Bovendien kun je per ongeluk belangrijke resources verwijderen, dus het is cruciaal om herstelstrategieën te bespreken.
Beide onderwerpen komen in deze sectie aan bod.
Tegen schijfruimteproblemen aanlopen
Docker-images kunnen groot zijn—wij hadden er onlangs één van meer dan 13 GB—en we weten zeker dat er nog grotere bestaan. Dus zelfs na
docker prunekan het zijn dat je systeem nog steeds weinig schijfruimte heeft.Om te zien precies hoeveel ruimte wordt gebruikt door images, containers en volumes, draai je dit commando:
Afbeelding 18 - Ruimte gebruikt door Docker
Wanneer je schijfruimte wilt terugwinnen met
docker prune-commando’s, voeg dan de vlag-atoe om alle images, volumes of containers te verwijderen—niet alleen dangling of anonieme. Houd uiteraard de mogelijke nadelen van deze aanpak in gedachten.Als het schijfruimteprobleem aanhoudt, is je enige optie om de beschikbare schijfruimte te vergroten.
Herstellen na per ongeluk verwijderen
Herstellen is makkelijker gezegd dan gedaan—daarom raden we aan te begrijpen wat er door pruning wordt verwijderd voordat je het daadwerkelijke commando draait.
Mocht je toch in een situatie belanden waarin je per ongeluk belangrijke containers, images of volumes hebt gepruned, begin dan met het controleren van logs om te achterhalen wat er is verwijderd.
Op macOS kan dat met de volgende twee commandos (opties voor Windows en Linux):
Met deze commando’s sla je de laatste 30 minuten aan Docker-gerelateerde logs op in
/tmp/logs.txt. Inspecteer deze logs om te bepalen welke containers of images zijn verwijderd.Voor verwijderde images kun je ze doorgaans opnieuw pullen van een registry zoals Docker Hub. Een commando als dit volstaat:
En voor verwijderde containers kun je ze altijd opnieuw aanmaken als ze gebaseerd waren op persistente images:
Alternatief kun je herstellen vanaf back-ups als die beschikbaar zijn; daarmee kun je zowel volume- als containerdata terugzetten. Overweeg in de toekomst tools voor volumesnapshots om dataverlies te voorkomen.
De beste strategie blijft echter: inspecteer de resources die zullen worden verwijderd vóórdat je een prune-commando draait, en ga alleen door als je zeker weet dat dit je workflow niet beïnvloedt.
Docker Prune samengevat
Kortom, de
docker prune-familie van commando’s is een krachtige manier om schijfruimte terug te winnen, maar brengt het risico met zich mee dat je per ongeluk resources verwijdert die je nodig hebt, met dataverlies tot gevolg. Dat risico is nog groter met de optionele vlaggen-a -f, die alles geforceerd verwijderen.Toch blijft pruning een beproefde methode om je systeem schoon en georganiseerd te houden.
Wees gewoon voorzichtig, vooral in productieomgevingen. Gebruik commando’s als
docker ps -a,docker imagesendocker volume lsvóór het prunen om alle containers, images en volumes te tonen. Draai het prune-commando pas nadat je zeker weet dat je akkoord bent met het verwijderen van de vermelde resources (ervan uitgaande dat ze niet door een draaiende container worden gebruikt).Wil je meer leren over Docker, containerisatie en orkestratie, bekijk dan deze cursussen op DataCamp: