Docker prune ver­wij­dert onnodige objecten zoals gestopte con­tai­ners, on­ge­bruik­te volumes en oude netwerken of af­beel­din­gen. Dit helpt het gebruik van de harde schijf te op­ti­ma­li­se­ren en maakt op­slag­ruim­te vrij.

Wat is Docker prune?

Docker prune of system prune is handig om Docker-bronnen die niet langer nodig zijn sys­te­ma­tisch op te ruimen, waardoor u geheugen vrijmaakt. Als Docker-con­tai­ners, af­beel­din­gen, netwerken en volumes lange tijd on­ge­bruikt blijven, kunnen ze een aan­zien­lij­ke hoe­veel­heid schijf­ruim­te in beslag nemen. Met prune kunt u deze on­ge­bruik­te bronnen snel ver­wij­de­ren, waardoor uw systeem schoon blijft en optimaal presteert.

Vooral in ont­wik­kelom­ge­vin­gen, waar vaak nieuwe con­tai­ners worden aan­ge­maakt en getest, kan een aan­zien­lijk aantal ver­ou­der­de objecten worden op­ge­sla­gen. Docker prune ver­wij­dert niet alleen on­ge­bruik­te con­tai­ners en af­beel­din­gen, maar ook netwerken en volumes die niet langer nodig zijn. Dit stroom­lijnt het beheer van Docker-bronnen en mi­ni­ma­li­seert het risico op een rommelig, over­be­last systeem.

Waarvoor wordt Docker prune gebruikt?

Het commando prune is geschikt voor ver­schil­len­de situaties in het da­ge­lijk­se werk met Docker. Hieronder hebben we vier typische scenario’s voor het gebruik ervan op een rijtje gezet.

Werk­pro­ces­sen op­ti­ma­li­se­ren: Docker-om­ge­vin­gen worden vaak gebruikt voor ont­wik­ke­ling, testen en productie. Zonder re­gel­ma­ti­ge op­scho­ning kan dit leiden tot een snelle ophoping van onnodige bronnen. Een der­ge­lij­ke over­be­las­ting verhoogt niet alleen het ge­heu­gen­ge­bruik, maar kan ook een negatieve invloed hebben op de sys­teem­pres­ta­ties. Door on­ge­bruik­te bronnen te ver­wij­de­ren, maakt Docker prune een ef­fi­ci­ën­ter gebruik van sys­teem­bron­nen mogelijk. Dit is vooral be­lang­rijk in cloud­ge­ba­seer­de om­ge­vin­gen, waar de kosten stijgen naarmate de vraag naar opslag- en re­ken­bron­nen toeneemt.

Verhoog de vei­lig­heid: Over­bo­di­ge en ver­ou­der­de Docker-bronnen kunnen vei­lig­heids­ri­si­co’s opleveren. Docker prune ver­wij­dert on­ge­bruik­te con­tai­ners, images, netwerken en volumes, waardoor de kans kleiner wordt dat ver­ou­der­de en mogelijk kwetsbare com­po­nen­ten on­be­schermd blijven. Door een schoon Docker-eco­sys­teem te on­der­hou­den, mi­ni­ma­li­seert u het aan­vals­op­per­vlak en verbetert u de algehele vei­lig­heid van uw IT-in­fra­struc­tuur.

Pres­ta­ties ver­be­te­ren: een over­be­las­te Docker-omgeving kan de sys­teem­pres­ta­ties be­lem­me­ren door onnodige bronnen zoals CPU en geheugen te ver­brui­ken. Re­gel­ma­tig opschonen met Docker prune maakt schijf­ruim­te vrij en verbetert de ef­fi­ci­ën­tie van con­tai­ner­be­heer en -uit­voe­ring. Dit re­sul­teert in aan­zien­lijk kortere laad­tij­den, snellere ap­pli­ca­tie-im­ple­men­ta­ties en een ver­be­ter­de algehele sys­teem­res­pon­si­vi­teit.

Ver­een­vou­digd onderhoud: Door Docker prune re­gel­ma­tig uit te voeren, wordt het onderhoud van uw Docker-omgeving aan­zien­lijk ver­een­vou­digd. Door on­ge­bruik­te bronnen te ver­wij­de­ren, worden be­heer­ta­ken voor ont­wik­ke­laars minder complex. Hierdoor is het een­vou­di­ger om actieve en relevante Docker-com­po­nen­ten bij te houden, wat het oplossen van problemen versnelt. Als gevolg hiervan besparen teams tijd op ad­mi­ni­stra­tie en kunnen ze zich meer richten op het ont­wik­ke­len en ver­be­te­ren van hun ap­pli­ca­ties in plaats van zich bezig te houden met over­bo­di­ge bronnen.

Wat is de syntaxis van Docker prune?

Heb je een Docker-omgeving en wil je resources opschonen om schijf­ruim­te vrij te maken en het beheer te ver­een­vou­di­gen? Voer in dat geval gewoon de volgende opdracht uit om toegang te krijgen tot prune services:

docker system prune
bash

Standaard iden­ti­fi­ceert Docker gestopte con­tai­ners, on­ge­bruik­te images, netwerken en volumes die kunnen worden opgeruimd en vraagt het u om be­ves­ti­ging voordat deze worden ver­wij­derd. Voer gewoon y in en druk op de Enter-toets om door te gaan. U kunt ook de optie -f gebruiken om de be­ves­ti­ging over te slaan en de opruiming on­mid­del­lijk uit te voeren:

docker system prune -f
bash

Tip: Het is handig om te con­tro­le­ren welke Docker-bronnen momenteel op het systeem aanwezig zijn voordat u Docker prune gebruikt. Voer de volgende op­drach­ten uit om een lijst met alle con­tai­ners, af­beel­din­gen, netwerken en volumes te krijgen:

docker ps -a
docker images
docker volume ls
docker network ls
bash

Docker prune opties

De volgende tabel geeft u een overzicht van de ver­schil­len­de opties van docker system prune.

Optie Be­schrij­ving
--all, -a Ver­wij­dert alle on­ge­bruik­te Docker-bronnen.
--force, -f Voert de op­scho­ning uit zonder be­ves­ti­ging van de gebruiker.
--volumes Ver­wij­dert on­ge­bruik­te volumes.
--filter, -f Maakt het mogelijk om de te ver­wij­de­ren bronnen te filteren op basis van criteria.
--help Geeft hulp weer over het gebruik van de opdracht.

Hoe het commando Docker prune toe te passen

Docker biedt ver­schil­len­de commando’s waarmee spe­ci­fie­ke soorten bronnen gericht kunnen worden op­ge­schoond. Dit geeft u de flexi­bi­li­teit om precies te bepalen welke bronnen moeten worden ver­wij­derd.

Docker prune --filter

U kunt Filter gebruiken om de selectie van te ver­wij­de­ren bronnen te beheren, zoals con­tai­ners, af­beel­din­gen, netwerken en volumes. Dit is handig in ont­wik­kelom­ge­vin­gen waar veel tij­de­lij­ke bronnen kunnen worden aan­ge­maakt en snel worden vergeten.

De algemene syntaxis is:

docker <command> prune --filter "filter=<value>"
bash

De ver­schil­len­de fil­ter­op­ties zijn onder andere:

  • until: Filtert bronnen op basis van hun aan­maak­da­tum. Hier kan <duration> een numerieke waarde zijn met een eenheid zoals h (uren), m (minuten) of s (seconden).
docker <command> prune --filter "until=<duration>"
bash

Voorbeeld: verwijder alle gestopte con­tai­ners die ouder zijn dan 24 uur.

docker container prune --filter "until=24h"
bash
  • label: Filtert bronnen op basis van hun Docker-labels
docker <command> prune --filter "label=<label>"
bash

Voorbeeld: Ruim alle on­ge­bruik­te volumes op die het label mylabel hebben.

docker volume prune --filter "label=mylabel"
bash
  • dangling: Filtert bronnen die niet langer door een container worden gebruikt
docker <command> prune --filter "dangling=true"
bash

Voorbeeld: verwijder alle niet meer gebruikte (los­han­gen­de) af­beel­din­gen*

docker image prune --filter "dangling=true"
bash

Naast de hierboven genoemde hoofd­fil­ters zijn er ook meer spe­ci­fie­ke fil­ter­op­ties, af­han­ke­lijk van het type bron:

  • before en since voor af­beel­din­gen: filtert af­beel­din­gen op basis van hun aan­maak­da­tum, vóór of sinds een bepaald tijdstip
  • exited voor con­tai­ners: filtert con­tai­ners op basis van hun exit­sta­tus (bij­voor­beeld exited=0 voor succesvol be­ëin­dig­de con­tai­ners)

Hoe Docker-bronnen ver­wij­de­ren

Stap 1: Open een terminal of op­dracht­re­gel op uw systeem.

Stap 2: Voer Docker prune uit om het systeem op te schonen:

docker {resource} prune
bash

Vervang {resource} door het type bronnen dat u wilt opschonen. Geldige waarden zijn container, image, volume en network.

Hoe Docker-con­tai­ners ver­wij­de­ren

Standaard geeft Docker con­tai­ners niet au­to­ma­tisch vrij nadat ze hun le­vens­cy­clus hebben voltooid. Het is be­lang­rijk om re­gel­ma­tig de gestopte con­tai­ners te con­tro­le­ren en ze indien nodig op te ruimen om ge­blok­keer­de bronnen vrij te maken voor het uitvoeren van con­tai­ners. Er zijn twee methoden om dit te doen.

  • docker rm: Het docker rm is bedoeld om één of meerdere Docker-con­tai­ners handmatig te ver­wij­de­ren. Als u precies weet welke con­tai­ners u wilt ver­wij­de­ren, is dit de juiste methode. U moet expliciet de ID’s of namen van de con­tai­ners opgeven die u wilt ver­wij­de­ren, zodat u alleen spe­ci­fie­ke con­tai­ners uit uw omgeving kunt ver­wij­de­ren zonder andere con­tai­ners te be­ïn­vloe­den.

Hier is een voorbeeld om de con­tai­ners met de namen container1 en container2 te ver­wij­de­ren:

docker rm container1 container2
bash
  • docker container prune: Daar­en­te­gen is docker container prune een commando dat bedoeld is om meerdere gestopte con­tai­ners tegelijk te ver­wij­de­ren. Deze methode is met name geschikt om snel en efficiënt ruimte vrij te maken door alle gestopte con­tai­ners te ver­wij­de­ren die momenteel geen actieve processen hebben.
docker container prune
bash

Alle gestopte con­tai­ners worden hier weer­ge­ge­ven en Docker vraagt om be­ves­ti­ging voordat ze worden ver­wij­derd. Dit is erg handig in om­ge­vin­gen waar veel tij­de­lij­ke con­tai­ners worden aan­ge­maakt die later overbodig worden.

Voor het da­ge­lijk­se beheer en onderhoud van uw Docker-omgeving is het raadzaam om docker container prune re­gel­ma­tig te gebruiken om gestopte con­tai­ners au­to­ma­tisch op te ruimen. Deze aanpak bespaart tijd en zorgt ervoor dat geen onnodige bronnen de sys­teem­pres­ta­ties be­ïn­vloe­den. Daar­en­te­gen is docker rm ideaal voor het gericht en ge­con­tro­leerd ver­wij­de­ren van spe­ci­fie­ke con­tai­ners, of dit nu voor test-, ont­wik­ke­lings- of andere spe­ci­fie­ke doel­ein­den is.

Hoe Docker-images ver­wij­de­ren

Docker-images zijn de bouw­ste­nen van con­tai­ners. Ze kunnen in de loop van de tijd veel ver­schil­len­de versies en tags hebben. Wanneer u nieuwe images maakt of bijwerkt, blijft u vaak zitten met oude of on­ge­bruik­te images, ook wel dangling genoemd. Deze nemen schijf­ruim­te in beslag op uw systeem en kunnen de pres­ta­ties be­ïn­vloe­den, vooral als er veel van der­ge­lij­ke images zijn.

Met Docker prune kunt u af­beel­din­gen iden­ti­fi­ce­ren en ver­wij­de­ren die niet meer worden gebruikt:

docker image prune [Options]
bash

Mogelijke opties hier zijn bij­voor­beeld:

  • -a, --all: Deze optie ver­wij­dert niet alleen losse af­beel­din­gen, maar ook on­ge­bruik­te af­beel­din­gen. On­ge­bruik­te af­beel­din­gen zijn af­beel­din­gen die geen tags meer hebben en daarom niet recht­streeks door tags kunnen worden aan­ge­roe­pen.
docker image prune -a
bash
  • -f, --force: Standaard vraagt Docker om be­ves­ti­ging voordat af­beel­din­gen daad­wer­ke­lijk worden ver­wij­derd. Met -f of --force kunt u deze be­ves­ti­gings­stap overslaan en de op­scho­ning on­mid­del­lijk uitvoeren.
docker image prune -f
bash

Hoe alle Docker-images ver­wij­de­ren

U kunt ook snel en volledig alle Docker-images op uw systeem opschonen die niet langer nodig zijn. Om Docker prune effectief te gebruiken, opent u eerst de terminal of op­dracht­prompt en voert u de volgende opdracht in:

docker image prune -a --force
bash

Con­tro­leer welke af­beel­din­gen worden ver­wij­derd voordat u doorgaat met het opschonen. Met optie -a kunt u on­ge­bruik­te af­beel­din­gen ver­wij­de­ren die u mogelijk nog nodig hebt.

Hoe Docker-volumes ver­wij­de­ren

Volumes zijn per­sis­tent en behouden gegevens, zelfs wanneer de bij­be­ho­ren­de container niet meer actief is. Na verloop van tijd kunnen deze volumes groeien en onnodig veel bronnen ver­brui­ken.

docker volume prune
bash

Dit commando zoekt naar alle volumes die geen actieve con­tai­ners hebben. U ontvangt een lijst met volumes die worden voor­ge­steld voor ver­wij­de­ring. Be­ves­ti­ging is vereist voordat de op­scho­ning wordt uit­ge­voerd.

Daar­en­te­gen is docker volume rm een commando dat specifiek in­di­vi­du­e­le Docker-volumes ver­wij­dert. Dit kan handig zijn als u precies weet welk volume u wilt ver­wij­de­ren, ongeacht of het momenteel door een container wordt gebruikt. Om een specifiek Docker-volume te ver­wij­de­ren, gebruikt u het commando docker volume rm gevolgd door de naam of ID van het volume:

docker volume rm volume_name
bash

Zorg er nogmaals voor dat u de naam of ID van het te ver­wij­de­ren volume weet, aangezien deze opdracht de gegevens permanent ver­wij­dert en niet ongedaan kan worden gemaakt.

Hoe Docker-netwerken ver­wij­de­ren

In Docker zijn netwerken een fun­da­men­teel onderdeel dat con­tai­ners in staat stelt met elkaar te com­mu­ni­ce­ren, of ze nu op dezelfde host staan of verspreid zijn over meerdere hosts. Docker-netwerken blijven bestaan, zelfs nadat con­tai­ners zijn beëindigd of ver­wij­derd. Na verloop van tijd kan dit leiden tot een op­een­sta­pe­ling van on­ge­bruik­te netwerken die onnodig resources ver­brui­ken. Met het docker prune network kunt u deze on­ge­bruik­te netwerken eenvoudig iden­ti­fi­ce­ren en ver­wij­de­ren.

Het commando heeft de volgende indeling:

docker network prune [OPTIONS]
bash

Docker genereert een lijst van alle netwerken die niet langer worden gebruikt door actieve con­tai­ners of waarnaar niet langer wordt verwezen. Ver­vol­gens wordt om be­ves­ti­ging gevraagd voordat de netwerken daad­wer­ke­lijk worden ver­wij­derd.

Best practices voor Docker prune

  • Ge­au­to­ma­ti­seer­de op­scho­ning: Gebruik ge­au­to­ma­ti­seer­de scripts of tools om re­gel­ma­tig Docker-images, con­tai­ners en volumes op te schonen die niet langer nodig zijn. Dit houdt de omgeving schoon en op­ti­ma­li­seert de pres­ta­ties.
  • Be­vei­li­gings­pat­ches en updates: Con­tro­leer re­gel­ma­tig of er be­vei­li­ging­sup­da­tes en patches be­schik­baar zijn voor Docker-engines, host­be­stu­rings­sys­te­men en alle Docker-images. Door deze com­po­nen­ten up-to-date te houden, worden po­ten­ti­ë­le be­vei­li­gings­ri­si­co’s tot een minimum beperkt.
  • Mo­ni­to­ring en log­boek­re­gi­stra­tie: Gebruik mo­ni­to­ring- en log­boek­re­gi­stra­tie­tools om de pres­ta­ties van con­tai­ners te monitoren, on­ver­wach­te ge­beur­te­nis­sen te de­tec­te­ren en proactief onderhoud te be­vor­de­ren.
  • Externe back-up: Stel routines in voor externe back-ups van be­lang­rij­ke gegevens uit Docker-con­tai­ners, zoals het re­gel­ma­tig maken van back-ups van database-inhoud of con­fi­gu­ra­tie­be­stan­den.
  • Hand­ma­ti­ge controle vóór ver­wij­de­ring: Con­tro­leer zorg­vul­dig of u bepaalde bronnen niet meer nodig hebt voordat u ze ver­wij­dert. Dit mi­ni­ma­li­seert het risico op onbedoeld ge­ge­vens­ver­lies of on­der­bre­kin­gen van lopende processen.
Tip

Als je net begint met Docker, raden we je aan onze uit­ge­brei­de Docker-hand­lei­ding te lezen.

Ga naar hoofdmenu