Docker Prune: Effiziente Bereinigung ungenutzter Docker-Ressourcen
Docker ist eine leistungsstarke Containerisierungsplattform, die häufig zum Erstellen, Ausführen und Verteilen von Anwendungen eingesetzt wird. Im Laufe der Zeit können sich durch Entwicklung und Bereitstellung ungenutzte Elemente wie gestoppte Container, „dangling“ Images, ungenutzte Volumes und inaktive Netzwerke ansammeln. Diese Reste beanspruchen Speicherplatz und können die Systemleistung beeinträchtigen, wenn sie nicht entfernt werden.
In dieser Anleitung erfahren Sie, wie Sie mit der docker prune-Befehlsfamilie ungenutzte Docker-Ressourcen sicher löschen. Sie lernen die Unterschiede zwischen docker prune und manueller Entfernung kennen, verstehen die Varianten von „prune“ und erhalten Best Practices, um Datenverlust beim Aufräumen zu vermeiden.
Was ist docker prune?
Die docker prune-Befehlsfamilie entfernt ungenutzte Docker-Ressourcen wie gestoppte Container, „dangling“ Images, ungenutzte Volumes, Netzwerke und Build-Cache in einem einzigen Schritt. Damit geht die Bereinigung schneller und ist weniger mühsam als das manuelle Löschen mit docker rm oder docker rmi.
| Funktion | docker rm / rmi | docker prune |
|---|---|---|
| Entfernt ein Element pro Vorgang | Ja | Nein |
| Entfernt alle ungenutzten Ressourcen auf einmal | Nein | Ja |
| Benötigt spezifische Namen oder IDs | Ja | Nein |
| Sicherer für manuelles Löschen | Ja | Nein |
| Nützlich für schnelles Aufräumen | Nein | Ja |
Verwenden Sie docker rm, wenn Präzision erforderlich ist. Verwenden Sie docker prune, wenn Sie alles effizient bereinigen möchten.
Kurzfassung
Nachfolgend die gebräuchlichsten Befehle zum Entfernen ungenutzter Docker-Ressourcen:
# Entfernt alle ungenutzten Container, Netzwerke, Images und Build-Cache
$ docker system prune
# Entfernt nur gestoppte Container
$ docker container prune
# Entfernt dangling (nicht getaggte und ungenutzte) Images
$ docker image prune
# Entfernt Volumes, die von keinem Container genutzt werden
$ docker volume prune
# Entfernt Netzwerke, die mit keinem Container verbunden sind
$ docker network prune
# Entfernt den Docker-Build-Cache
$ docker builder prune
Häufige Optionen für docker prune
Die meisten docker prune-Befehle unterstützen folgende Optionen:
| Option | Beschreibung |
|---|---|
| –force | Überspringt Bestätigungsabfragen. Vorsicht: Kann versehentliches Löschen verursachen. |
| –filter | Filtert Ressourcen nach Kriterien wie Alter. Beispiel: --filter "until=24h" entfernt Elemente, die älter als 24 Stunden sind. |
| –all | (Bei Images) Entfernt alle ungenutzten Images, nicht nur „dangling“. |
Mit Filtern können Sie sicherstellen, dass neue Ressourcen nicht versehentlich entfernt werden.
Alle Docker-Ressourcen mit docker system prune bereinigen
Der Befehl docker system prune entfernt alle ungenutzten Container, Netzwerke, „dangling“ Images und den Build-Cache.
Befehlssyntax
docker system prune [OPTIONS]
Befehlsbeispiele
Interaktives Bereinigen ungenutzter Ressourcen:
$ docker system prune
Bereinigung ohne Bestätigung:
$ docker system prune --force
Bereinigung von Ressourcen, die älter als 48 Stunden sind:
$ docker system prune --filter "until=48h"
Wann verwenden?
- Nach intensiver Entwicklung oder häufigen Containeränderungen
- Wenn der Speicherplatz knapp wird
- Wenn keine gestoppten Container oder ungenutzten Images benötigt werden
Docker-Container mit docker container prune bereinigen
Mit diesem Befehl entfernen Sie ausschließlich gestoppte Container. Laufende Container bleiben unberührt.
Befehlssyntax
docker container prune [OPTIONS]
Befehlsbeispiele
Alle gestoppten Container löschen:
$ docker container prune
Alle gestoppten Container ohne Bestätigung löschen:
$ docker container prune --force
Gestoppte Container löschen, die älter als 24 Stunden sind:
$ docker container prune --filter "until=24h"
Wann verwenden?
- Nach Tests oder Entwicklung mit kurzlebigen Containern
- Wenn sich viele gestoppte Container angesammelt haben
- Um Speicherplatz freizugeben, ohne laufende Container zu beeinflussen
Docker-Images mit docker image prune bereinigen
Dieser Befehl entfernt ungenutzte Docker-Images. Standardmäßig werden nur „dangling“ Images gelöscht – also nicht getaggte und von keinem Container verwendete Images.
Befehlssyntax
docker image prune [OPTIONS]
Befehlsbeispiele
Alle „dangling“ Images entfernen:
$ docker image prune
Alle ungenutzten Images (nicht nur „dangling“) löschen:
$ docker image prune --all
Unbenutzte Images löschen, die älter als 72 Stunden sind:
$ docker image prune --all --filter "until=72h"
Wann verwenden?
- Nach dem Erstellen oder Herunterladen vieler temporärer Images
- Wenn der Speicherplatz durch Image-Layer knapp wird
- Um alte Builds zu entfernen, die nicht mehr von Containern genutzt werden
Docker-Volumes mit docker volume prune bereinigen
Dieser Befehl entfernt Volumes, die von keinem Container genutzt werden. Aktive oder verbundene Volumes bleiben erhalten.
Befehlssyntax
docker volume prune [OPTIONS]
Befehlsbeispiele
Alle ungenutzten Volumes interaktiv löschen:
$ docker volume prune
Alle ungenutzten Volumes ohne Bestätigung löschen:
$ docker volume prune --force
Wann verwenden?
- Nach dem Löschen von Containern, die zuvor persistente Volumes genutzt haben
- Wenn sich temporäre oder Test-Volumes ansammeln
- Um Speicherplatz zurückzugewinnen, der durch verwaiste Daten belegt ist
Warnung: Volumedaten sind nach dem Löschen unwiederbringlich. Prüfen Sie immer, welche Volumes noch aktiv genutzt werden.
Docker-Netzwerke mit docker network prune bereinigen
Mit diesem Befehl entfernen Sie Docker-Netzwerke, die mit keinem laufenden oder gestoppten Container verbunden sind.
Befehlssyntax
docker network prune [OPTIONS]
Befehlsbeispiele
Alle ungenutzten Netzwerke interaktiv löschen:
$ docker network prune
Alle ungenutzten Netzwerke ohne Bestätigung löschen:
$ docker network prune --force
Wann verwenden?
- Nach dem Entfernen von Containern, die mit
docker-composeerstellt wurden - Beim Testen von Multi-Container-Anwendungen
- Um verwaiste oder automatisch erstellte Bridge-Netzwerke zu bereinigen
Docker-Build-Cache mit docker builder prune bereinigen
Dieser Befehl löscht den beim Image-Build erstellten Cache. Standardmäßig werden nur ungenutzte („dangling“) Cache-Layer entfernt.
Befehlssyntax
docker builder prune [OPTIONS]
Befehlsbeispiele
Unbenutzten Build-Cache interaktiv löschen:
$ docker builder prune
Gesamten ungenutzten Build-Cache ohne Bestätigung löschen:
$ docker builder prune --all --force
Wann verwenden?
- Nach häufigem Erstellen von Images während der Entwicklung
- Wenn der Speicherplatz knapp wird
- Um nicht mehr benötigte Zwischen-Layer zu löschen
Fehlerbehebung bei Docker Prune
Ursache: Docker entfernt nur ungenutzte Ressourcen. Wenn ein Container oder Volume noch referenziert wird, erfolgt keine Bereinigung.
Lösung
Container stoppen:
$ docker container stop <container_id>
Container entfernen:
$ docker container rm <container_id>
Prune erneut ausführen:
$ docker system prune
Ursache: Das Volume ist noch mit einem Container verbunden.
Lösung
Alle Volumes auflisten:
$ docker volume ls
Volume prüfen, um die Nutzung zu ermitteln:
$ docker volume inspect <volume_name>
Den verbundenen Container entfernen:
$ docker container rm <container_id>
Volumes anschließend bereinigen:
$ docker volume prune
Ursache: Einige Ressourcen werden noch referenziert oder waren im letzten Prune-Befehl nicht enthalten.
Lösung
Speichernutzung prüfen:
$ docker system df
Zielgerichtete Prune-Befehle ausführen:
$ docker image prune
$ docker volume prune
Komplette Bereinigung durchführen (nur wenn sicher):
$ docker system prune --all
Fazit
In diesem Artikel haben Sie gelernt, wie ungenutzte Docker-Ressourcen mit der docker prune-Befehlsfamilie bereinigt werden können. Sie haben gesehen, wie sich gestoppte Container, „dangling“ Images, ungenutzte Volumes und Netzwerke sowie Build-Cache sicher und effizient entfernen lassen. Diese Befehle tragen dazu bei, eine saubere Entwicklungsumgebung zu bewahren und Speicherplatz zu sparen.


