Ga naar hoofdinhoud

Docker-image verwijderen: zo verwijder je ongebruikte en zwevende images

Deze gids laat je precies zien hoe je Docker-images veilig en effectief verwijdert om schijfruimte terug te winnen, build-rommel te voorkomen en opslaggerelateerde fouten te vermijden!
· 10 min lezen

Verken met AI

Gebruik je Docker en loop je vaak tegen een tekort aan schijfruimte aan? Je bent niet de enige.

Docker-images zijn de bouwstenen van Docker-containers, maar ze kunnen zich snel opstapelen en veel schijfruimte innemen. Deze images variëren van enkele megabytes tot meerdere gigabytes, dus een regelmatig opschoonproces is essentieel voor optimale systeemprestaties.

Het goede nieuws: Docker biedt een paar commands om onnodige images te verwijderen en schijfruimte terug te winnen. Als je deze commands snapt en weet wanneer je ze gebruikt, raak je hopelijk voorgoed die waarschuwingen over onvoldoende opslag kwijt.

In deze tutorial laat ik je verschillende manieren zien om Docker-images te verwijderen, hoe je veelvoorkomende fouten tijdens het verwijderen oplost, en deel ik best practices om je Docker-omgeving schoon te houden.

>Helemaal nieuw met Docker? Deze praktische gids over containers helpt je in no time op weg.

Wat is een Docker-image?

Een Docker-image is een lichtgewicht, standalone en uitvoerbaar softwarepakket dat alles bevat wat nodig is om een applicatie te draaien: code, runtime, libraries, omgevingsvariabelen en configuratiebestanden. 

Zie het als een snapshot of template waarmee containers worden aangemaakt.

>Docker wordt niet alleen gebruikt door software engineers - het is ook geliefd bij data scientists!

Docker-images zijn opgebouwd uit lagen, waarbij elke laag een set wijzigingen aan het bestandssysteem voorstelt. Wanneer je een image pullt van Docker Hub of er een bouwt met een Dockerfile, download of maak je eigenlijk een stapel van deze lagen die samenwerken. Deze lagen worden gecachet, wat het bouwen en delen van images efficiënter maakt, maar ook betekent dat ze opslagruimte op je machine innemen.

Images worden vooral problematisch als je actief applicaties ontwikkelt. Je bouwt vaak herhaaldelijk images met kleine wijzigingen, maakt verschillende versies voor tests en pullt afhankelijkheden die mogelijk nooit automatisch worden opgeruimd. 

Voor je het weet, heb je tientallen of zelfs honderden images die gigabytes aan kostbare - en beperkte - SSD-ruimte opslokken.

>Als je met data science en machine learning bezig bent, moet je deze 12 Docker-images kennen.

Waarom Docker-images verwijderen?

Simpel gezegd: Docker-images staan berucht bekend als ruimtevreters, en je schijfruimte is nu eenmaal beperkt.

Het verwijderen van onnodige Docker-images heeft meerdere belangrijke doelen:

  • Allereerst win je opslagruimte terug, wat vooral cruciaal is als je op een laptop met beperkte capaciteit werkt of in een CI/CD-omgeving met opslagbeperkingen. Die "No space left on device"-errors duiken op de een of andere manier altijd op op het slechtst mogelijke moment.
  • Opschonen verwijdert ook verouderde versies die ontwikkelaars of deployments kunnen verwarren. Niets is vervelender dan per ongeluk een oude image gebruiken omdat je latest-tag naar iets onverwachts wees. 
  • Bovendien maakt een rommelige imagelijst het lastiger om te vinden wat je echt nodig hebt. Als je docker images draait en een hele pagina vol repositories, tags en ID’s ziet, kost het veel tijd om precies die image te vinden waar je naar zoekt. Regelmatig opruimen houdt je werkomgeving beheersbaar en je command-uitvoer leesbaar. Een kleine quality-of-life-verbetering die zich op termijn uitbetaalt.

Straks laat ik je een paar manieren zien om Docker-images te verwijderen.

Docker-images verwijderen

Nu je begrijpt wat Docker-images zijn en waarom het belangrijk is ze in toom te houden, duiken we in het daadwerkelijke verwijderproces. 

Docker biedt een paar commands om je images te beheren, van het opvragen van wat je hebt tot het verwijderen van wat je niet nodig hebt.

Bestaande Docker-images controleren

Voordat je begint met verwijderen, moet je weten wat daadwerkelijk ruimte inneemt op je systeem. Het command docker images is je eerste stap in dit opschoonproces.

docker images

Dit command toont al je Docker-images met nuttige informatie, zoals:

  • Repository-naam
  • Tag
  • Image-ID
  • Aanmaakdatum 
  • Grootte

Afbeelding 1 - Beschikbare Docker-images

Afbeelding 1 - Beschikbare Docker-images

Kijken naar de kolom met de grootte kan best een eyeopener zijn. Zoals je in Afbeelding 1 ziet, neemt de Oracle-database-image meer dan 15 GB in beslag!

Wil je je images op grootte sorteren om de grootste ruimtevreters te vinden:

docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h

Afbeelding 2 - Beschikbare Docker-images gesorteerd op grootte

Afbeelding 2 - Beschikbare Docker-images gesorteerd op grootte

Dit is een compacter overzicht, omdat niet alle image-eigenschappen zijn opgenomen.

Een specifieke Docker-image verwijderen

Als je images hebt gevonden die je niet nodig hebt, kun je ze één voor één verwijderen met het command docker rmi (waarbij rmi staat voor "remove image").

Je kunt een image verwijderen op basis van de ID of met de combinatie repository:tag:

# Verwijderen op image-ID
docker rmi 4e7024df2f20

# Verwijderen op repository:tag
docker rmi nginx:latest

Afbeelding 3 - Twee manieren om individuele Docker-images te verwijderen

Afbeelding 3 - Twee manieren om individuele Docker-images te verwijderen

Het is ook goed om te weten dat Docker je niet laat verwijderen wat in gebruik is door containers. Je krijgt dan een foutmelding zoals:

Afbeelding 4 - Poging om Docker-images te verwijderen die in gebruik zijn

Afbeelding 4 - Poging om Docker-images te verwijderen die in gebruik zijn

Zie je dit, dan moet je eerst de afhankelijke containers stoppen en verwijderen voordat je de image verwijdert, of de force-optie gebruiken (daar kom ik zo op terug).

Meerdere Docker-images verwijderen

Images één voor één verwijderen kan omslachtig zijn, zeker tijdens een grote opschoonactie. Gelukkig kun je met Docker meerdere images in één keer verwijderen.

Je kunt een door spaties gescheiden lijst van image-ID’s opgeven:

docker rmi postgres:latest mariadb:latest

Afbeelding 5 - Meerdere Docker-images verwijderen

Afbeelding 5 - Meerdere Docker-images verwijderen

Of, voor meer geavanceerde scenario’s, combineer je docker images met filters en piping. Deze verwijdert bijvoorbeeld alle images met de tag latest:

docker rmi $(docker images --filter=reference="*:latest" -q)

Afbeelding 6 - Alle Docker-images met een specifieke tag verwijderen

Afbeelding 6 - Alle Docker-images met een specifieke tag verwijderen

Nou ja, behalve de images die momenteel door draaiende containers worden gebruikt.

Wees voorzichtig met dit soort bulkverwijder-commands, want ze vragen niet om bevestiging. Controleer altijd je filtercriteria voordat je op Enter drukt.

Zwevende en ongebruikte images verwijderen

Wanneer je een image opnieuw bouwt, maakt Docker nieuwe lagen voor alles wat is veranderd en hergebruikt het gecachete lagen voor ongewijzigde delen. De unieke lagen van de vorige versie worden dan "dangling” (zwevend) — ze staan op schijf maar maken geen deel uit van een benoemde image.

Je kunt zwevende images identificeren met:

docker images -f "dangling=true"

Afbeelding 7 - Zwevende Docker-images weergeven

Afbeelding 7 - Zwevende Docker-images weergeven

Voer nu het prune-command uit om ze allemaal in één keer te verwijderen:

docker image prune

Afbeelding 8 - Docker-image pruning

Afbeelding 8 - Docker-image pruning

Dit command vraagt om bevestiging voordat het doorgaat. Weet je zeker dat je alles wilt verwijderen:

docker image prune -f

Voor een agressievere opschoning kun je zowel zwevende images als ongebruikte images (die door geen enkele container worden gebruikt) verwijderen:

docker image prune -a

Afbeelding 9 - Alle ongebruikte images verwijderen

Afbeelding 9 - Alle ongebruikte images verwijderen

Dit laatste command kan veel ruimte vrijmaken, maar gebruik het met beleid, want het verwijdert alle images waarnaar niet wordt verwezen door draaiende of gestopte containers.

>Wat doet het Docker Prune-command precies? We hebben er een compleet artikel aan gewijd — bomvol voorbeelden.

Nu je weet hoe je Docker-images verwijdert, bekijken we een paar veelvoorkomende fouten en hoe je daarmee omgaat.

Fouten afhandelen bij het verwijderen van Docker-images

Zoals bij alles in softwareontwikkeling kom je soms fouten tegen wanneer je Docker-images probeert te verwijderen. 

De meeste van deze fouten hebben een goede reden: de veiligheidsmaatregelen van Docker zijn bedoeld om te voorkomen dat je per ongeluk iets belangrijks kapotmaakt. Laten we de meest voorkomende fouten en hun oplossingen doornemen.

Fout: Image wordt gebruikt door een container

De meest voorkomende fout bij het verwijderen van Docker-images ziet er ongeveer zo uit:

Error response from daemon: conflict: unable to delete 64ba095c0f0e (cannot be forced) - image is being used by running container 0284660ca006

Dit gebeurt omdat de architectuur van Docker een strikte afhankelijkheidsrelatie heeft tussen containers en images. Een container is in essentie een draaiende instantie van een image met daarbovenop een eigen schrijfbare laag. 

Waarom voorkomt Docker het verwijderen? Simpel: als je een image zou verwijderen terwijl een daarop gebaseerde container nog draait, crasht die container meteen. Zelfs gestopte containers behouden verwijzingen naar hun parent-images, omdat ze later mogelijk opnieuw worden gestart.

Om zo’n image te verwijderen, begin je met het tonen van alle containers (inclusief gestopte) die de image gebruiken:

docker ps -a --filter ancestor=64ba095c0f0e

Afbeelding 10 - Alle containers die de image gebruiken

Afbeelding 10 - Alle containers die de image gebruiken

Vervolgens kun je alle containers stoppen:

docker stop 0284660ca006

Afbeelding 11 - Containers stoppen

Afbeelding 11 - Containers stoppen

Daarna kun je de gestopte containers verwijderen:

docker rm 0284660ca006

Afbeelding 12 - Containers verwijderen

Afbeelding 12 - Containers verwijderen

En tot slot verwijder je de image met het bekende rmi-command:

docker rmi 64ba095c0f0e

Afbeelding 13 - De Docker-image verwijderen

Afbeelding 13 - De Docker-image verwijderen

Of, als je liever één shellcommand gebruikt, kan dit ook:

docker ps -a --filter ancestor=090040f97aa1 -q | xargs docker rm -f && docker rmi 090040f97aa1

Afbeelding 14 - Alles in één shellcommand doen

Afbeelding 14 - Alles in één shellcommand doen

Een stuk makkelijker, toch?

Geforceerd Docker-images verwijderen

Als je er absoluut zeker van bent dat je een image wilt verwijderen, ongeacht afhankelijkheden, kun je de vlag -f of --force gebruiken:

docker rmi -f 64ba095c0f0e

Afbeelding 15 - Docker-images geforceerd verwijderen

Afbeelding 15 - Docker-images geforceerd verwijderen

De force-optie vertelt Docker dat de image moet worden verwijderd, zelfs als er door containers of andere images naar wordt verwezen. 

Maar images waarnaar door draaiende containers wordt verwezen, worden niet verwijderd.

Force-verwijdering moet je als laatste redmiddel gebruiken, bijvoorbeeld bij het debuggen van Docker zelf of als je absoluut zeker weet dat het verbreken van de afhankelijkheden veilig is. In productieomgevingen is het bijna nooit de juiste keuze.

Onthoud: de afhankelijkheidscontroles van Docker bestaan met een reden. Werken mét in plaats van tégen die controles levert een stabielere en beter voorspelbare Docker-ervaring op.

Best practices voor het beheren van Docker-images

Docker-images beheren is geen eenmalige taak — het is een doorlopende verantwoordelijkheid. 

Goede gewoontes en best practices voorkomen noodopschoningen wanneer je schijfruimte ineens op nul staat. In dit onderdeel laat ik strategieën zien om je Docker-omgeving schoon te houden.

>Op zoek naar een complete gids om Docker te leren? Onze gids voor dataprofessionals is een goed startpunt.

Regelmatig opruimen

Net zoals je de afwas niet wekenlang laat opstapelen, wil je ongebruikte Docker-images niet eindeloos op je systeem laten staan.

Een periodiek onderhoudsschema is de simpelste manier om imagestapeling te voorkomen. Afhankelijk van hoe actief je Docker gebruikt, kan dat wekelijks, maandelijks of per kwartaal zijn. 

Tijdens deze opschoonmomenten kun je:

  1. docker images draaien en kandidaten voor verwijdering identificeren.
  2. Controleren op images die je niet herkent of recent niet hebt gebruikt.
  3. Zoeken naar dubbele versies van dezelfde applicatie.
  4. Onnodige images verwijderen met de eerder behandelde commands.

Veel developmentteams verwerken image-opschoning ook in hun CI/CD-pipelines. Zo kun je Jenkins of GitHub Actions configureren om build-images die ouder zijn dan een bepaalde periode automatisch op te ruimen.

Met dit command toon je alleen images die ouder zijn dan 30 dagen:

docker images --format "{{.ID}}\t{{.CreatedAt}}" | awk '$2 < "'$(date -d '30 days ago' +'%Y-%m-%d')'"' | cut -f1

Docker image pruning gebruiken

Docker biedt ingebouwde prune-commands die veel handmatig opschoonwerk kunnen automatiseren.

Het command docker system prune verwijdert in één keer alle gestopte containers, zwevende images en ongebruikte netwerken:

docker system prune

Voor een grondiger schoonmaak die ook ongebruikte images verwijdert:

docker system prune -a

Je kunt zelfs ruimte terugwinnen uit build-caches:

docker builder prune

Deze commands zijn perfect om te scripten. Hier is een simpel voorbeeld van een opschoonscript dat je periodiek kunt draaien:

#!/bin/bash
# Stop alle containers
docker stop $(docker ps -q)

# Verwijder alle gestopte containers
docker container prune -f

# Verwijder alle ongebruikte images
docker image prune -a -f

# Toon resterend schijfgebruik
docker system df

Afbeelding 16 - Geautomatiseerd script voor Docker-opschoning

Afbeelding 16 - Geautomatiseerd script voor Docker-opschoning

Vergeet niet de vlag -f voorzichtig te gebruiken in geautomatiseerde scripts, omdat die bevestigingsprompts overslaat.

Imageversies geordend houden

Een goede taggingstrategie helpt om de ophoping van onnodige Docker-images te minimaliseren.

In plaats van altijd de tag latest te gebruiken (die na verloop van tijd ambigu kan worden), kun je het volgende overwegen:

  • Gebruik semantische versies voor je images:
myapp:1.0.0
myapp:1.0.1
myapp:1.1.0
  • Neem build-informatie op in tags:
myapp:build-2025-04-06
myapp:commit-a7f3d9e
  • Voeg qualifiers voor omgeving of doel toe:
myapp:1.0.0-dev
myapp:1.0.0-test
myapp:1.0.0-prod

Voor grotere teams kan een registrybeleid helpen dat oude images na een bepaalde periode automatisch opruimt. Zowel Docker Hub als private registries zoals Harbor bieden functies om imagelifecycles te beheren.

Door deze best practices te combineren — regelmatig opruimen, geautomatiseerd prunen en geordend taggen — houd je je Docker-omgeving veel gezonder en voorkom je die beruchte "no space left on device"-errors.

Samenvatting: Docker-images verwijderen

Als je met containers werkt, is goed beheer van Docker-images een onmisbare vaardigheid.

De kracht van Docker komt uit het efficiënt isoleren en verpakken van applicaties, maar zonder goed onderhoud kan dat voordeel snel een nadeel worden.

Je hebt geleerd waarom Docker-images na verloop van tijd problematisch kunnen worden, hoe ze kostbare schijfruimte opsouperen en rommel veroorzaken in je ontwikkelomgeving. Je hebt verschillende commands gezien om images te controleren en te verwijderen, van gerichte verwijdering met docker rmi tot bulkopschoning met prune-commands. Ook heb je de veelvoorkomende fouten tijdens het verwijderen gezien en geleerd hoe je die oplost.

Wil je meer leren over Docker en containerization, dan zijn deze cursussen een goed volgende stap:

FAQs

Kan ik een Docker-image herstellen nadat ik die heb verwijderd?

Nee, zodra je een Docker-image verwijdert met docker rmi, kun je die niet terughalen, tenzij je een back-up hebt of de image opnieuw kunt pullen uit een registry. Zorg er altijd voor dat je de juiste images verwijdert, zeker in productieomgevingen. Voor images die je lokaal hebt gebouwd, moet je ze mogelijk opnieuw bouwen vanuit de Dockerfile.

Wat zijn zwevende (dangling) Docker-images en hoe verwijder ik ze?

Zwevende images zijn lagen die niet bij een getagde image horen, vaak ontstaan wanneer je images meerdere keren opnieuw bouwt. Je identificeert ze met docker images -f "dangling=true" en verwijdert ze in één keer met docker image prune.

Hoe kan ik snel schijfruimte vrijmaken in Docker?

De snelste manier om ruimte vrij te maken is docker system prune -a, waarmee alle gestopte containers, ongebruikte netwerken, zwevende images en ongebruikte images worden verwijderd. Wees voorzichtig: dit verwijdert alle images die door geen enkele container worden gebruikt.

Hoe vaak moet ik mijn Docker-images opschonen?

De frequentie hangt af van hoe actief je Docker gebruikt. In ontwikkelomgevingen met frequente builds zijn wekelijkse opschoonbeurten aan te raden. Voor minder actieve systemen volstaat maandelijks of per kwartaal. Overweeg geautomatiseerde opschoonscripts voor consistentie.

Wat is het verschil tussen verwijderen en prunen van Docker-images?

Verwijderen richt zich op specifieke images die je kiest, terwijl prunen automatisch alle ongebruikte of zwevende images opruimt op basis van bepaalde criteria.

Dario Radečić

Auteur

Dario Radečić

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.

Onderwerpen

Gerelateerd