Docker container aufräumen prune
Voraussetzungen
- Docker CLI installiert und lauffähig (z. B.
docker versionzeigt Client/Server). - Du hast die nötigen Rechte: entweder als root oder Mitglied der Docker-Gruppe (
docker). - Hinweis: Linux-Distributionen, Kernel-Versionen und Docker-Versionen unterscheiden sich. Befolge die Befehle sorgfältig und prüfe Ausgaben bevor du destruktive Aktionen ausführst.
Überblick: Was macht docker container prune?
docker container prune entfernt alle gestoppten Container. Laufende Container bleiben erhalten. Es löscht keine Volumes oder Images (außer du verwendest docker system prune), kann aber gelöschte Container-IDs und damit Historie/Logs entfernen.
Schritt 1: Aktuelle Container prüfen
Bevor du etwas löschst, prüfe den aktuellen Status und identifiziere, was gelöscht werden könnte.
# Alle Container anzeigen (laufend + gestoppt)
docker ps -a
# Nur gestoppte Container anzeigen
docker ps -a --filter "status=exited"
# Optional: Platzverbrauch anzeigen
docker system df
Lese die Liste durch und stelle sicher, dass keine Container mit wichtigen Daten oder noch benötigten Logs darunter sind.
Schritt 2: Gestoppte Container selektiv löschen
Wenn du nur bestimmte gestoppte Container entfernen willst, verwende docker rm mit IDs oder Namen.
Warnung: Entfernen ist dauerhaft. Erstelle vorher Backups relevanter Daten (z. B. aus Volumes oder mit docker cp).
# Beispiel: mehrere Container entfernen
docker rm container1 container2
# Alle gestoppten Container per Kommandozeile an `docker rm` übergeben
docker rm $(docker ps -a -q -f status=exited)
Achte bei $(...)-Konstrukten auf korrekte Shell-Expansion; wenn die Liste leer ist, kann ein Fehler auftreten. Sicherer: docker ps -a -q -f status=exited | xargs -r docker rm (GNU xargs) oder prüfe vorher, ob Ausgabe vorhanden ist.
Schritt 3: Alle gestoppten Container mit docker container prune
Wenn du wirklich alle gestoppten Container entfernen willst, ist docker container prune dafür gedacht.
Warnung: Dieses Kommando löscht dauerhaft alle gestoppten Container. Erstelle Backups wichtiger Daten (Volumes, konfigurierte Dateien) bevor du fortfährst.
# Interaktiver Modus: fragt vor dem Löschen
docker container prune
# Für automatisches Bestätigen (nicht empfohlen ohne Backup)
# Warnung: --force löscht ohne Rückfrage
docker container prune --force
Hinweis zu “dry run”: Docker hat kein nativen --dry-run für prune. Um eine Trockenübung zu machen, liste zuerst die zu löschenden Container:
# "Dry run": zeigt, was gelöscht würde
docker ps -a --filter "status=exited" --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
Das erlaubt dir, die Zielmenge zu prüfen, bevor du prune ausführst.
Schritt 4: Weiteres Aufräumen — Images, Volumes, Netzwerke
Wenn du zusätzlich nicht verwendete Images, Volumes oder Netzwerke löschen willst, gibt es docker system prune. Das ist deutlich umfassender.
Warnung: docker system prune kann Images und ungenutzte Volumes löschen, was zu Datenverlust führen kann (z. B. wenn Volumes wichtige State-Dateien enthalten). Backup vorher!
# Nur ungenutzte Dinge (fragt nach Bestätigung)
docker system prune
# Alle ungenutzten Images (auch nicht dangling), Container, Netzwerke löschen
docker system prune --all
# Volumes ebenfalls einschließen (vorsichtig!)
docker system prune --volumes
Verwende --force für kein Bestätigungs-Prompt, aber nur wenn du sicher bist.
Schritt 5: Alle Container stoppen und löschen
Wenn Ziel ist, wirklich alle Container (laufende + gestoppte) zu entfernen:
Warnung: Stoppen und Löschen laufender Container beendet Prozesse und kann Datenverlust verursachen. Backup wichtige Daten.
# Alle Container stoppen
docker stop $(docker ps -q)
# Alle Container löschen
docker rm $(docker ps -a -q)
Bei leerer Liste: nutze xargs -r oder prüfe vorher. Auf Systemen ohne xargs -r kannst du mit Condition arbeiten:
containers=$(docker ps -a -q)
[ -n "$containers" ] && docker rm $containers
Podman vs. Docker kurz
- Podman bietet rootless Betrieb und kompatible CLI-Befehle (
podman container pruneexistiert ähnlich). Verhalten ist oft gleich, aber nicht überall identisch (z. B. Systemd-Integration, Storage-Backend). - Wenn du Podman statt Docker verwendest, prüfe die jeweilige Manpage (
man podman-prunebzw.podman container prune).
Häufige Fehler und Troubleshooting
- “permission denied connecting to docker daemon”: Prüfe Mitgliedschaft in Docker-Gruppe oder verwende
sudo. docker rmschlägt fehl weil Container laufen: zuerstdocker stop.- Leere Expansion (
$(docker ps -q)gibt nichts): vermeide, dass Löschbefehle mit nichts ausgeführt werden — prüfe Variable vorher. - Angst vor Datenverlust: Backups der Volumes/exportierter Dateien anlegen (z. B.
docker cp,tardes Volume-Inhalts oderdocker run --rm -v myvol:/data busybox tar ...).
Abschließend: Handle vorsichtig bei prune und system prune. Prüfe immer zuerst mit den Listenbefehlen (docker ps -a, docker system df) und sichere persistente Daten bevor du Löschbefehle ausführst.
Kommst du an dieser Stelle nicht weiter oder funktioniert ein Schritt bei dir anders als beschrieben? Schreib uns einfach kurz, woran es hakt – schreib uns eine E-Mail, wir schauen es uns gemeinsam an.
Passende Themen
- Docker Compose Anleitung
- Docker Compose installieren Windows
- Docker installieren mint
- Docker installieren mint
Häufige Fragen
Soll ich Docker oder Podman verwenden?
Beide haben ihre Berechtigung. Podman läuft standardmäßig rootless (potenziell sicherer), Docker hat das größere Ökosystem. Wir benennen die Unterschiede ehrlich statt einer Pauschalempfehlung.
Ist docker system prune gefährlich?
Es kann ungenutzte Container, Images und Volumes löschen - inklusive Daten, die noch gebraucht werden. Vor dem Ausführen immer prüfen, was betroffen ist, und wichtige Daten sichern.
Warum bekomme ich bei Docker eine Permission-Denied-Fehlermeldung?
Meist fehlt der eigene Nutzer in der docker-Gruppe. Das lässt sich beheben, sollte aber mit Bedacht gemacht werden, da Mitglieder dieser Gruppe root-ähnliche Rechte erhalten.