Kurs
Docker Prune: Ein kompletter Leitfaden mit praktischen Beispielen
Wenn du täglich mit Docker arbeitest, weißt du, wie schnell es Speicherplatz verbrauchen kann.
Mit der Zeit sammelt dein System ungenutzte Images, Container, Volumes und Netzwerke an. Diese liegen meist ungenutzt herum, nehmen wertvollen Speicherplatz in Anspruch und hindern dich möglicherweise daran, an deinem aktuellen Projekt zu arbeiten. Zum Glück bietet Docker integrierte Aufräumbefehle, mit denen sich unnötige Ressourcen leicht entfernen lassen.
Diese Aufräumbefehle sind Teil der docker prune
Familie, und heute lernst du alles über sie. Sie werden schnell zu deiner bevorzugten Lösung, um Speicherplatz freizugeben.
Beginnen wir mit einem kurzen Überblick, bevor wir uns praktischen Beispielen zuwenden.
Bist du neu bei Docker? Schau dir unsere guide an, wie du Docker von Grund auf lernst, damit Datenexperten schnell auf Touren kommen.
Was ist Docker Prune?
Der Begriff "Docker Prune" bezieht sich in der Regel auf eine Reihe von Befehlen, die dir helfen sollen, ungenutzte und unnötige Docker-Ressourcen zu entfernen.
Im Laufe der Zeit, vor allem wenn du an mehreren Projekten arbeitest, wirst du unzählige Images erstellen, Container ausführen und Volumes und Netzwerke einrichten. All diese Dateien sammeln sich auf deinem System an und nehmen eine beträchtliche Menge an Speicherplatz ein. Das Ziel von docker prune
ist es, dieses Durcheinander zu beseitigen und Platz zu schaffen.
Trotzdem gibt es auf docker prune
mehr, als man auf den ersten Blick sieht.
Es ist nicht nur ein einzelner Befehl, den du ausführen kannst. Nun, das könntest du, aber manchmal brauchst du granulare Kontrolle darüber, was entfernt wird. Genau da setzt dieser Artikel an. Es wird dir zeigen, wie du das Beschneiden effektiv handhabst und sicherstellst, dass du nur das löschst, was du auch wirklich willst, und wie du in einer sicheren Umgebung übst, damit du nicht versehentlich wichtige Daten löschst.
Es ist auch wichtig zu wissen, dass prune-Befehle nur Ressourcen entfernen, die nicht aktiv genutzt werden. Bilder, Volumes und Netzwerke, die von laufenden Containern referenziert werden, werden nicht gelöscht. Mit anderen Worten: Das Pruning beeinträchtigt die aktive Arbeitslast nicht.
Im nächsten Abschnitt führen wir dich durch die verschiedenen Arten von Beschneidungsbefehlen und erklären, wie sie in deinen Arbeitsablauf passen.
Möchtest du Docker in deinen Lebenslauf oder dein Portfolio aufnehmenio? Diese 10 Docker-Projektideen machen dich fit für den Job.
Alle Docker Prune-Befehle mit praktischen Beispielen
Docker bietet mehrere prune
Befehle, mit denen du ungenutzte Ressourcen einzeln oder alle auf einmal bereinigen kannst. In diesem Abschnitt lernst du sie kennen - sowohl in derTheorie als auch in praktischen Beispielen.
docker system prune
Dies ist der umfangreichste Befehl zur Rückgewinnung von Speicherplatz. Er entfernt alle ungenutzten Container, Netzwerke, Images und den Build-Cache in einem einzigen Vorgang.
Wenn du nach einem schnellen Weg suchst, um mit einem einzigen Befehl Speicherplatz freizugeben, ist dies der richtige Weg.
Du kannst dem Befehl docker system prune
Optionen übergeben:
-a
oder--all
entfernt alle unbenutzten Bilder und nicht nur die unbenutzten Bilder (Bilder, die nicht mit einem Tag versehen sind oder von einem Container referenziert werden).--filter
ermöglicht es dir, Filterwerte festzulegen.-f
oder--force
überspringt die Bestätigungsaufforderung.--volumes
löscht auch anonyme Volumes zusammen mit Containern, Netzwerken, Images und dem Build-Cache.
Standardmäßig fordert docker system prune
dich zur Bestätigung auf, da es sich um eine potenziell zerstörerische Vorgang ist:
Abbildung 1 - Docker System Prune Bestätigungsaufforderung
Um die Eingabeaufforderung zu umgehen und alle unbenutzten Images, Container, Netzwerke und Volumes mit einem einzigen Befehl zu entfernen, führe diesen aus:
docker system prune -a -f --volumes
Bild 2 - Alles mit einem einzigen docker system prune Befehl entfernen
Aber was ist, wenn du eine genauere Kontrolle brauchst? Lass uns das als Nächstes behandeln.
docker container prune
Einfach ausgedrückt, dieser Befehl entfernt alle gestoppten Container.
Gestoppte Container bleiben auf deinem System, bis sie manuell entfernt werden. Sie können Festplattenspeicher belegen und schwer zu erkennen sein, es sei denn, du verwendest ein Tool wie Docker Desktop Dashboard.
Wie docker system prune
unterstützt auch dieser Befehl Optionen:
--filter
kannst du Schlüssel-Wert-Paare angeben, um zu kontrollieren, welche Container entfernt werden.-f
oder--force
überspringt die Bestätigungsaufforderung.
Hier ist eine Liste der nicht laufenden Container:
Abbildung 3 - Liste der nicht laufenden Container
Um code-server
(und jeden anderen gestoppten Container) zu entfernen, führe aus:
docker container prune -f
Dabei wirst du nicht zur Bestätigung aufgefordert und innerhalb von Sekunden siehst du eine Ausgabe wie diese:
Abbildung 4 - Ausgabe der Container-Beschneidungsmeldung
Und einfach so gibt es keine gestoppten Container mehr:
Abbildung 5 - Liste der nicht laufenden Container (2)
Jetzt kümmern wir uns um die nicht verwendeten Bilder.
docker image prune
Ähnlich wie der vorherige Befehl entfernt docker image prune
unbenutzte Bilder.
Standardmäßig werden nur ungeordnete Bilder entfernt - Bilder, die nicht gekennzeichnet und nicht mit einem Container verbunden sind. Du kannst ein optionales Flag verwenden, um alle unbenutzten Bilder zu entfernen, nicht nur die hängenden Bilder.
Hier ist eine Liste der verfügbaren Optionen
-a
oder--all
entfernt alle unbenutzten Bilder, anstatt nur die hängenden.--filter
kannst du Schlüssel-Wert-Paare angeben, um zu kontrollieren, welche Bilder entfernt werden.-f
oder--force
überspringt die Bestätigungsaufforderung.
Jetzt wollen wir es in Aktion sehen!
Hier ist eine Liste der Bilder, die sich derzeit im System befinden:
Abbildung 6 - Liste der Docker-Images
Um sie alle mit einem einzigen Befehl zu entfernen, führe aus:
docker image prune -a -f
Im Terminal siehst du dann eine Ausgabe wie diese:
Abbildung 7 - Ausgabe der Bildbeschneidungsmeldung
Danach verbleiben keine Images in Docker Desktop:
Abbildung 8 - Liste der Docker-Images (2)
Als Nächstes kümmern wir uns um ungenutzte Volumina.
docker volume prune
Wie der Name schon sagt, werden mit dem Befehl docker volume prune
alle unbenutzten lokalen Volumes entfernt. Mit anderen Worten: Es werden Volumes gelöscht, die von keinem Container referenziert werden.
Standardmäßig entfernt der Befehl nur anonyme Volumes - namenlose Volumes, die von Docker beim Start eines Containers erstellt werden. Um explizit benannte Volumes zu entfernen, musst du eine zusätzliche Option übergeben.
Das sind die Optionen, die du hast:
-a
oder--all
entfernt alle unbenutzten Volumes statt nur der anonymen.--filter
kannst du Schlüssel-Wert-Paare angeben, um zu kontrollieren, welche Bände entfernt werden.-f
oder--force
überspringt die Bestätigungsaufforderung.
In unserem System haben wir ein einzelnes, vom Benutzer erstelltes Volume aus einer docker-compose.yml
Datei:
Abbildung 9 - Liste der Docker-Volumes
Der folgende Befehl entfernt alle lokalen Volumes:
docker volume prune -a -f
Nachdem du es ausgeführt hast, siehst du eine ähnliche Ausgabe wie diese:
Abbildung 10 - Volume Pruning-Ausgabemeldung
Jetzt sind keine Bände mehr übrig:
Abbildung 11 - Liste der Docker-Volumes (2)
Zum Schluss schauen wir uns noch an, wie du ungenutzte Netzwerke löschst.
docker network prune
Wenn Docker-Container miteinander kommunizieren, verwenden sie oft benutzerdefinierte Netzwerke. Ihre Netzwerke verbleiben jedoch in der Regel auf deinem System, wenn diese Container entfernt werden.
Der Befehl docker network prune
entfernt Netzwerke, die von keinem Container mehr verwendet werden.
Wie bei den anderen Prune-Befehlen gibt es auch hier ein paar Optionen:
--filter
kannst du Schlüssel-Wert-Paare angeben, um zu kontrollieren, welche Netzwerke entfernt werden.-f
oder--force
überspringt die Bestätigungsaufforderung.
Im Gegensatz zu Images, Containern oder Volumes kannst du Netzwerke mit Docker Desktopnicht visuell inspizieren, du musst also über die Kommandozeile arbeiten. Hier ist eine Liste der verfügbaren Netzwerke:
Abbildung 12 - Liste der Docker-Netzwerke
Um alle Netzwerke zu entfernen, die nicht mit der Standard-Docker-Installation verbunden sind, führe aus:
docker network prune -a -f
Nachdem du den Befehl ausgeführt hast, siehst du eine Ausgabe wie diese:
Abbildung 13 - Netzwerk-Beschneidungsnachricht
Alle Netzwerke, die mit zuvor laufenden Containern verbunden waren, sind nun verschwunden:
Abbildung 14 - Liste der Docker-Netzwerke
Beachte jedoch, dass die drei verbleibenden Netzwerke für die ordnungsgemäße Funktion von Docker unerlässlich sind und nicht entfernt werden können.
Und das war's mit der grundlegenden Verwendung der docker prune
Befehle! Als Nächstes behandeln wir fortgeschrittene Themen wie die sichere Verwendung dieser Befehle und bewährte Verfahren für Produktions- und sensible Umgebungen.
Docker Prune sicher verwenden
Die Befehle docker prune
helfen dabei, schnell Speicherplatz zurückzugewinnen, aber sie müssen mit Vorsicht verwendet werdenverwendet werden, besonders in Produktionsumgebungen.
Das versehentliche Löschen von wichtigen Containern, Images oder Volumes kann zu Datenverlusten führen und wichtige Arbeitsabläufe unterbrechen. Um dies zu verhindern, ist es am besten, wenn du weißt, was entfernt werden soll, bevor du den Befehl prune ausführst.
In diesem Abschnitt werden die wichtigsten Vorsichtsmaßnahmen für den sicheren Betrieb von docker prune
erklärt.
Verstehen, was entfernt werden soll
Die prune
Befehle sind so konzipiert, dass sie nur Ressourcen entfernen, die nicht aktiv genutzt werden.
docker image prune
löscht zum Beispiel nur baumelnde Abbilder und docker volume prune
entfernt nur Volumes, die nicht an einen Container angehängt sind. Wenn du jedoch Optionen wie -a -f
hinzufügst, werden alle Bilder oder Datenträger entfernt, ohne dass du eine Bestätigung benötigst.
Außerdem können in komplexen Umgebungen Abhängigkeiten leicht übersehen werden, daher ist es immer eine gute Praxis, vor dem Beschneiden doppelt zu prüfen.
Bevor du einen prune
Befehl ausführst, solltest du dein System überprüfen, um zu sehen, welche Ressourcen derzeit verwendet werden. Es gibt verschiedene Möglichkeiten, dies zu tun, und wir werden in diesem Abschnitt die gängigsten davon untersuchen.
Mit diesem Befehl kannst du alle Container anzuzeigen, auch die gestoppten:
docker ps -a
Du solltest eine ähnliche Ausgabe wie diese sehen:
Abbildung 15 - Liste aller Docker-Container
In ähnlicher Weise kannst du mit diesem Befehl alle Bilder aufzulisten, auch die unbenutzten:
docker images
Die Ausgabe ist ähnlich strukturiert wie die obige:
Abbildung 16 - Liste aller Docker-Images
Um Volumes zu überprüfen, führe diesen Befehl aus, um alle Volumes aufzulisten:
docker volume ls
Abbildung 17 - Liste aller Docker-Volumes
Überprüfe diese Ausgaben sorgfältig, um sicherzustellen, dass keine wichtigen Ressourcen versehentlich gelöscht werden.
Trockenübung zur Sicherheit
Leider hat Docker immer noch keine eingebaute Option für einen Trockenlauf von Pruning-Befehlen, obwohl dies schon vor Jahren gefordert wurde.
Aus diesem Grund musst du Ressourcen manuell überprüfen mit den im vorherigen Abschnitt aufgeführten Befehlen überprüfen, bevor du einen Prune-Befehl ausführst.
Wenn du in einer sensiblen Umgebung arbeitest, in der die Persistenz der Daten entscheidend ist, solltest du immer ein Backup erstellen erstellen, bevor du Prune-Befehle ausführst, die sich auf Volumes auswirken.
Natürlich sind das nur Vorsichtsmaßnahmen, aber wir hoffen, dass es bald eine Option für Trockenübungen geben wird.
Best Practices für Docker Prune
Um deine Docker-Umgebung frei von unnötigem Ballast zu halten, ist es wichtig, die Befehle von prune
regelmäßig auszuführen - vielleicht sogar zu automatisieren.
In diesem Abschnitt erfährst du, wie du docker prune
Befehle in Produktionsumgebungen am besten ausführst.
Regelmäßig docker prune verwenden
Im Laufe der Zeit sammelt Docker ungenutzte Images, gestoppte Container und unnötige Volumes an, die alle viel Speicherplatz verbrauchen.
Die regelmäßige Ausführung von Bereinigungsbefehlen hält deine Umgebung sauber und verhindert eine übermäßige Festplattennutzung. Du solltest sie in deinen Wartungsplan aufnehmen.
Alle paar Wochen ist ein guter Ausgangspunkt, aber wenn du häufig Container aufstellen und entfernen musst, solltest du einen häufigeren Zeitplan in Betracht ziehen.
Sei vorsichtig in der Produktion
Jede Arbeit in einer Produktionsumgebung erfordert besondere Vorsicht, und Docker Pruning ist da keine Ausnahme.
Ein Moment der Unachtsamkeit kann zu Ausfallzeiten oder Datenverlust führen, und dafür willst du nicht verantwortlich sein. Bevor du die Befehle docker prune
in einer Produktionsumgebung ausführst, solltest du immer die Systemressourcen mit docker ps -a
, docker images
und docker volume ls
überprüfen, wie im vorherigen Abschnitt erklärt.
Außerdem ist es eine gute Idee, spezielle Beschneidungsbefehle zu verwenden, anstatt den Pauschalbefehl docker system prune
zu verwenden, da es so einfacher ist, unbeabsichtigte Löschungen wiederherzustellen.
Docker prune automatisieren
Eine weitere gute Praxis ist die Rationalisierung der Aufräumarbeiten durch die Automatisierung von docker prune
Befehlen mithilfe von geplanten Aufgaben.
Unter Linux kannst du einen Cron-Jobeinrichten , der die Befehle in regelmäßigen Abständen ausführt, während du unter Windows den Taskplaner für eine ähnliche Automatisierung verwenden kannst . Dies hilft, ein ordentliches System zu erhalten, ohne dass manuelle Eingriffe nötig sind. In einer Produktionsumgebung solltest du jedoch sicherstellen, dass das automatische Beschneiden die kritischen Arbeitslasten nicht beeinträchtigt.
Dieser Cron-Job unter Linux führt zum Beispiel jeden Sonntag um Mitternacht einen pauschalen Beschneidungsbefehl aus:
0 0 * * 0 docker system prune -a -f
Fehlerbehebung bei Docker Prune-Problemen
Die Befehle docker prune
sind eine gute Lösung, um Speicherplatz zurückzugewinnen, aber sie reichen nicht immer aus, um genügend Platz für neue Images oder Container zu schaffen.
Außerdem kann es passieren, dass du versehentlich wichtige Ressourcen entfernst, deshalb ist es wichtig, Wiederherstellungsstrategien zu besprechen.
Beide Themen werden in diesem Abschnitt behandelt.
Probleme mit dem Speicherplatz
Docker-Images können sehr groß sein - wir hatten kürzlich eines mit über 13 GB - und wir sind sicher, dass es noch größere gibt. Es kann also sein, dass du auch nach der Ausführung von docker prune
feststellst, dass dein System immer noch zu wenig Speicherplatz hat.
Um zu sehen genau zu sehen, wie viel Speicherplatz von Images, Containern und Volumes belegt wird, führst du diesen Befehl aus:
docker system df
Abbildung 18 - Von Docker genutzter Platz
Wenn du mit den Befehlen docker prune
Speicherplatz zurückforderst, füge das Flag -a
hinzu, um alle Images, Volumes oder Container zu entfernen - nicht nur die anonymen oder hängenden. Natürlich solltest du die möglichen Nachteile dieses Ansatzes bedenken.
Wenn das Problem mit dem Festplattenspeicher weiterhin besteht, ist deine einzige Möglichkeit, den verfügbaren Speicherplatz zu erhöhen.
Erholung von versehentlichen Umzügen
Wiederherstellung ist leichter gesagt als getan - deshalb empfehlen wir, sich vor der Ausführung des eigentlichen Befehls darüber klar zu werden, was durch das Pruning entfernt wird.
Wenn du jedoch in eine Situation kommst, in der du versehentlich wichtige Container, Images oder Volumes beschnitten hast, überprüfe zunächst die Logs um festzustellen, was entfernt wurde.
Unter macOS kannst du dies mit den folgenden beiden Befehlen tun(Optionen für Windows und Linux):
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.txt
Wenn du diese Befehle ausführst, werden die letzten 30 Minuten der Docker-bezogenen Logs in /tmp/logs.txt
gespeichert. Du solltest diese Protokolle untersuchen, um festzustellen, welche Container oder Bilder gelöscht wurden.
Gelöschte Images kannst du wahrscheinlich aus einer Registry wie Docker Hub wiederherstellen. Ein Befehl wie dieser sollte ausreichen:
docker pull <image_name>
Und für gelöschte Containerkannst du sie immer wieder neu erstellen, wenn sie auf persistenten Images basieren:
docker run --name <container_name> <image_name>
Alternativ kannst du von Backups wiederherstellen, wenn diese verfügbar sind, um sowohl Volume- als auch Containerdaten wiederherzustellen. Erwäge in Zukunft den Einsatz von Tools für Volume Snapshots, um Datenverluste zu vermeiden.
Die beste Strategie ist jedoch, die zu löschenden Ressourcen zu überprüfen, bevor du einen Beschneidungsbefehl ausführst, und nur dann fortzufahren, wenn du dir absolut sicher bist, dass dein Arbeitsablauf dadurch nicht beeinträchtigt wird.
Zusammenfassung von Docker Prune
Zusammenfassend lässt sich sagen, dass die docker prune
Befehlsfamilie eine leistungsstarke Methode ist, um Speicherplatz zurückzugewinnen, aber sie birgt das Risiko, dass du versehentlich benötigte Ressourcen löschst, was zu Datenverlust führen kann. Dieses Risiko ist noch größer, wenn du die optionalen -a -f
Flags verwendest, die alles mit Gewalt entfernen.
Trotzdem bleibt das Beschneiden eine gute Methode, um dein System sauber und organisiert zu halten.
Du musst nur vorsichtig sein, besonders in Produktionsumgebungen. Verwende Befehle wie docker ps -a
, docker images
und docker volume ls
vor dem Pruning, um alle Container, Images und Volumes aufzulisten. Führe den Befehl erst aus, wenn du sicher bist, dass du die aufgelisteten Ressourcen löschen kannst (vorausgesetzt, sie werden nicht von einem laufenden Container verwendet).
Wenn du mehr über Docker, Containerisierung und Container-Orchestrierung erfahren möchtest, schau dir diese Kurse auf DataCamp an:
FAQs
Ist docker prune sicher?
Im Allgemeinen ja, aber es sollte mit Vorsicht verwendet werden. Es werden nur Ressourcen entfernt, die nicht in Gebrauch sind, aber wenn du es ohne Überprüfung ausführst, kann es zu versehentlichen Löschungen kommen, besonders in Produktionsumgebungen. Zusätzliche Flags wie -a -f
entfernen zwangsweise alle ungenutzten Ressourcen.
Was ist der Unterschied zwischen "docker prune" und "docker rm"?
docker prune
entfernt alle ungenutzten Ressourcen eines bestimmten Typs, während docker rm
verwendet wird, um bestimmte Container oder Images manuell zu löschen.
Entfernt docker system prune alles?
Nein, docker system prune
entfernt unbenutzte Container, Netzwerke, Images und den Build-Cache. Benannte Volumes werden jedoch nicht gelöscht, es sei denn, das Flag --volumes
wird nach dem Befehl angegeben.
Was ist ein Dangling Image in Docker?
Ein "Dangling Image" ist ein Bild, das nicht mit einem Tag versehen ist oder von einem Container referenziert wird. Dabei handelt es sich in der Regel um übrig gebliebene Zwischenabbilder von Builds, die mit dem Befehl docker image prune
sicher entfernt werden können.
Lerne mehr über Docker mit diesen Kursen!
Kurs
Intermediate Docker
Lernpfad
Containerization and Virtualization

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
20 Min.
Der Blog
Q2 2023 DataCamp Donates Digest
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.
Der Blog