Docker prune Tutorial: Syntax und Anwendungsbeispiele
Docker prune
entfernt unnötige Objekte wie gestoppte Container, nicht verwendete Volumes, alte Netzwerke oder Images. Auf diese Weise optimieren Sie die Festplattennutzung und geben Speicherplatz frei.
Was ist Docker prune
?
Docker prune
bzw. system prune
ist nützlich, um nicht mehr benötigte Docker-Ressourcen systematisch zu bereinigen und somit mehr Speicher zu gewinnen. Wenn Docker-Container, Images, Netzwerke und Volumes über einen längeren Zeitraum ungenutzt bleiben, können sie eine beträchtliche Menge an Speicherplatz belegen. Mit prune
können Sie diese ungenutzten Ressourcen schnell beseitigen und so das System sauber und performant halten.
Insbesondere in Entwicklungsumgebungen, wo häufig neue Container erstellt und getestet werden, kann sich eine Vielzahl von veralteten Objekten ansammeln. Docker prune
räumt nicht nur Container und Bilder auf, sondern auch Netzwerke und Volumes, die Sie nicht mehr benötigen. Dadurch wird die Verwaltung der Docker-Ressourcen deutlich vereinfacht und das Risiko eines unübersichtlichen und überladenen Systems minimiert.
Wofür wird Docker prune
eingesetzt?
Das prune
-Kommando eignet sich für verschiedene Situationen bei der täglichen Arbeit mit Docker. Nachfolgend haben wir vier typische Szenarien für die Nutzung aufgeführt.
Arbeitsprozesse optimieren: Docker-Umgebungen werden häufig intensiv für Entwicklungs-, Test- und Produktionszwecke verwendet. Ohne regelmäßige Bereinigung kann es schnell zu einer Akkumulation nicht mehr benötigter Ressourcen kommen. Diese Überladung führt nicht nur zu einem erhöhten Speicherbedarf, sondern kann auch die Systemleistung negativ beeinflussen. Indem Docker prune
ungenutzte Ressourcen entfernt, werden die Systemressourcen effizienter genutzt. Dies ist besonders in cloudbasierten Umgebungen entscheidend, wo die Kosten mit dem Bedarf an Speicher- und Rechenressourcen steigen.
Sicherheit erhöhen: Überflüssige und veraltete Docker-Ressourcen können Sicherheitsrisiken darstellen. Docker prune
entfernt ungenutzte Container, Images, Netzwerke und Volumes, wodurch das Risiko verringert wird, dass veraltete und möglicherweise unsichere Komponenten ungeschützt bleiben. Ein sauberes Docker-Ökosystem trägt dazu bei, die Angriffsfläche zu minimieren und die Sicherheitslage der gesamten IT-Infrastruktur zu verbessern.
Leistung steigern: Eine überladene Docker-Umgebung kann die Systemleistung beeinträchtigen, indem sie Ressourcen wie CPU und Speicher unnötig belastet. Durch die regelmäßige Bereinigung mit Docker prune
wird Speicherplatz freigegeben und die Effizienz der Container-Verwaltung und -Ausführung gesteigert. Dies führt zu deutlich kürzeren Ladezeiten, schnelleren Bereitstellungen von Anwendungen und insgesamt zu einer besseren Reaktionsfähigkeit des Systems.
Vereinfachte Wartung: Die regelmäßige Durchführung von Docker prune
vereinfacht die Wartung Ihrer Docker-Umgebung erheblich. Das Entfernen ungenutzter Ressourcen reduziert die Komplexität der Verwaltungsaufgaben für Entwicklerinnen und Entwickler. Es ist zudem einfacher, den Überblick über die aktiven und relevanten Docker-Komponenten zu behalten, was die Fehlerdiagnose und -behebung beschleunigt. Dies spart nicht nur Zeit bei der Verwaltung, sondern ermöglicht Teams, sich mehr auf die Entwicklung und Verbesserung ihrer Anwendungen zu konzentrieren, anstatt mit überflüssigen Ressourcen zu kämpfen.
Syntax: Wie wird Docker prune
verwendet?
Sie haben eine Docker-Umgebung und möchten Ressourcen bereinigen, um Speicherplatz freizugeben und die Verwaltung zu vereinfachen? In diesem Fall führen Sie einfach den folgenden Befehl aus, um auf die Dienste von prune
zurückzugreifen:
docker system prune
bashStandardmäßig werden gestoppte Container, nicht mehr verwendete Images, Netzwerke und ungenutzte Volumes identifiziert und zur Bereinigung vorgeschlagen. Docker bittet um Ihre Bestätigung, diese zu entfernen. Geben Sie y
ein und drücken Sie die Eingabetaste. Alternativ können Sie auch direkt die Option -f
verwenden, um die Bestätigung zu überspringen und die Bereinigung sofort auszuführen:
docker system prune -f
bashTipp: Es ist sinnvoll, vor der Anwendung von Docker prune
zu überprüfen, welche Docker-Ressourcen derzeit auf dem System vorhanden sind. Führen Sie folgende Befehle aus, um eine Liste aller Container, Bilder, Netzwerke und Volumes zu erhalten:
docker ps -a
docker images
docker volume ls
docker network ls
bashDocker prune
Optionen
Die folgende Tabelle gibt Ihnen eine Übersicht über die verschiedenen Optionen von docker system prune
.
Option | Beschreibung |
---|---|
--all, -a
|
Entfernt alle unbenutzten Docker-Ressourcen. |
--force, -f
|
Führt die Bereinigung ohne Benutzerbestätigung durch. |
--volumes
|
Entfernt ungenutzte Volumes. |
--filter, -f
|
Erlaubt das Filtern der zu entfernenden Ressourcen nach Kriterien. |
--help
|
Zeigt eine Hilfe zur Verwendung des Befehls an. |
Docker prune
: Tutorial zur praktischen Anwendung des Befehls
Docker bietet verschiedene Befehle, die eine gezielte Bereinigung spezifischer Ressourcenarten erlauben. Dies gibt Ihnen die Flexibilität, genau zu kontrollieren, welche Ressourcen entfernt werden sollen.
Docker prune --filter
Sie können Filter einsetzen, um die Auswahl der zu entfernenden Ressourcen zu steuern, wie zum Beispiel Container, Images, Netzwerke und Volumes. Dies ist vorteilhaft in Entwicklungsumgebungen, in denen schnell viele temporäre Ressourcen erstellt und vergessen werden können.
Die allgemeine Syntax lautet:
docker <command> prune --filter "filter=<value>"
bashZu den verschiedenen Filteroptionen gehören:
-
until
: Filtert Ressourcen basierend auf ihrem Erstellungsdatum. Dabei kann<duration>
ein numerischer Wert mit einer Einheit wieh
(Stunden),m
(Minuten) oders
(Sekunden) sein.
docker <command> prune --filter "until=<duration>"
bashBeispiel: Alle gestoppten Container entfernen, die älter als 24 Stunden sind
docker container prune --filter "until=24h"
bash-
label
: Filtert Ressourcen basierend auf ihren Docker-Labels
docker <command> prune --filter "label=<label>"
bashBeispiel: Alle ungenutzten Volumes bereinigen, die das Label mylabel
haben
docker volume prune --filter "label=mylabel"
bash-
dangling
: Filtert Ressourcen, die nicht mehr von einem Container verwendet werden
docker <command> prune --filter "dangling=true"
bashBeispiel: Alle nicht mehr verwendeten (dangling) Images entfernen*
docker image prune --filter "dangling=true"
bashNeben den oben genannten Hauptfiltern gibt es auch spezifischere Filteroptionen je nach Ressourcentyp:
-
before
undsince
für Images: Filtert Images basierend auf ihrem Erstellungsdatum, entweder vor oder seit einem bestimmten Zeitpunkt -
exited
für Container: Filtert Container basierend auf ihrem Exit-Status (zum Beispielexited=0
für erfolgreich beendete Container)
Docker-Ressourcen entfernen
Schritt 1: Öffnen Sie ein Terminal oder eine Befehlszeile auf Ihrem System.
Schritt 2: Führen Sie Docker prune
zur Bereinigung des Systems aus:
docker {resource} prune
bashErsetzen Sie {resource}
durch den Typ der Ressourcen, die Sie bereinigen möchten. Gültige Werte sind container
, image
, volume
und network
.
Docker-Container entfernen
Standardmäßig gibt Docker Container nicht automatisch frei, nachdem diese ihren Lebenszyklus beendet haben. Daher ist es wichtig, regelmäßig die gestoppten Container zu überprüfen und sie bei Bedarf zu bereinigen, um die blockierten Ressourcen für laufende Container verfügbar zu machen. Hierfür gibt es zwei Methoden.
-
docker rm
: Der Befehldocker rm
ist dafür gedacht, einzelne oder mehrere Docker-Container manuell zu entfernen. Wenn Sie genau wissen, welche Container gelöscht werden sollen, ist dies die passende Methode. Sie müssen die IDs oder Namen der Container explizit angeben, die Sie entfernen möchten. So können Sie nur bestimmte Container aus Ihrer Umgebung entfernen, ohne andere Container zu beeinflussen.
Hier ist ein Beispiel, um die Container mit den Namen container1
und container2
zu löschen:
docker rm container1 container2
bash-
docker container prune
: Im Gegensatz dazu istdocker container prune
ein Befehl, der darauf abzielt, mehrere gestoppte Container auf einmal zu entfernen. Diese Methode eignet sich besonders gut, um schnell und effizient Platz freizugeben, indem alle gestoppten Container gelöscht werden, die aktuell keine laufenden Prozesse haben.
docker container prune
bashHierbei werden alle gestoppten Container aufgelistet. Docker fordert Sie zur Bestätigung auf, bevor sie entfernt werden. Dies ist äußerst praktisch in Umgebungen, in denen viele temporäre Container erstellt und später nicht mehr benötigt werden.
Für die tägliche Verwaltung und Wartung Ihrer Docker-Umgebung ist es ratsam, docker container prune
regelmäßig zu verwenden, um gestoppte Container automatisch zu bereinigen. Dies spart Zeit und stellt sicher, dass keine unnötigen Ressourcen die Systemleistung beeinträchtigen. docker rm
hingegen ist ideal, wenn Sie gezielt und kontrolliert bestimmte Container löschen möchten, sei es für Tests, Entwicklung oder andere spezifische Anforderungen.
Docker-Images entfernen
Docker-Images sind die Bausteine von Containern. Sie können im Laufe der Zeit viele verschiedene Versionen und Tags haben. Wenn Sie neue Images erstellen oder aktualisieren, bleiben häufig alte oder nicht mehr verwendete Images zurück, die als „dangling“ bezeichnet werden. Diese nehmen Speicherplatz auf Ihrem System in Anspruch und können die Leistung beeinträchtigen, insbesondere wenn viele solcher Images vorhanden sind.
Mit Docker prune
können Sie nicht mehr verwendete Images identifizieren und entfernen:
docker image prune [Options]
bashMögliche Optionen sind hierbei zum Beispiel:
-
-a
,--all
: Diese Option entfernt nicht nur dangling Images, sondern auch unbenutzte Images. Unbenutzte Images sind solche, die keine Tags mehr haben und daher nicht direkt durch Tags referenziert werden können.
docker image prune -a
bash-
-f
,--force
: Standardmäßig fordert Docker eine Bestätigung an, bevor Images tatsächlich gelöscht werden. Mit-f
oder--force
können Sie diesen Bestätigungsschritt überspringen und die Bereinigung sofort durchführen.
docker image prune -f
bashAlle Docker-Images entfernen
Sie können auch alle nicht mehr benötigten Docker-Images auf Ihrem System umfassend und schnell bereinigen. Um Docker prune
effektiv einzusetzen, öffnen Sie zuerst das Terminal bzw. die Eingabeaufforderung und geben dort den folgenden Befehl ein:
docker image prune -a --force
bashSorgen Sie dafür, dass Sie nachvollziehen können, welche Images entfernt werden sollen, bevor Sie die Bereinigung durchführen. Die Option -a
kann auch unbenutzte Images löschen, die möglicherweise noch benötigt werden.
Docker-Volumes entfernen
Volumes sind persistent und speichern Daten auch dann, wenn der zugehörige Container nicht mehr läuft. Diese Volumes können im Laufe der Zeit anwachsen und unnötig Ressourcen belegen.
docker volume prune
bashDieser Befehl sucht nach allen Volumes, auf denen es keine aktiven Container mehr gibt. Sie erhalten eine Liste mit Volumes, die zur Entfernung vorgeschlagen werden. Zudem ist eine Bestätigung erforderlich, bevor die Bereinigung tatsächlich durchgeführt wird.
Im Gegensatz dazu ist docker volume rm
ein Kommando, das gezielt einzelne Docker-Volumes entfernt. Dies kann nützlich sein, wenn Sie genau wissen, welches Volume gelöscht werden soll, unabhängig davon, ob es von einem Container verwendet wird oder nicht. Um ein bestimmtes Docker-Volume zu entfernen, nutzen Sie den Befehl docker volume rm
gefolgt vom Namen oder der ID des Volumes:
docker volume rm volume_name
bashStellen Sie auch hier sicher, dass Sie den genauen Namen oder die ID des zu löschenden Volumes kennen, da dieser Befehl die Daten dauerhaft entfernt und nicht rückgängig gemacht werden kann.
Docker-Netzwerke entfernen
In Docker sind Netzwerke eine grundlegende Komponente, durch die Container miteinander kommunizieren, unabhängig davon, ob sie auf demselben Host oder über mehrere Hosts verteilt sind. Docker-Netzwerke bleiben bestehen, auch nachdem Container beendet oder entfernt wurden. Dies kann im Laufe der Zeit zu einer Ansammlung von Netzwerken führen, die nicht mehr verwendet werden und unnötig Ressourcen belegen. Der Befehl docker prune network
ist eine einfache Möglichkeit, diese nicht mehr verwendeten Netzwerke zu identifizieren und zu entfernen.
Der Befehl hat folgende Form:
docker network prune [OPTIONS]
bashDocker generiert hierbei eine Liste aller Netzwerke, die nicht mehr von aktiven Containern verwendet werden beziehungsweise nicht mehr referenziert sind. Anschließend wird um Bestätigung gebeten, bevor die Netzwerke tatsächlich entfernt werden.
Docker prune
: Best Practices
- Automatisierte Bereinigung: Setzen Sie automatisierte Skripte oder Tools ein, um nicht mehr benötigte Docker-Images, Container und Volumes regelmäßig zu bereinigen. Dadurch bleibt die Umgebung sauber und die Leistung wird optimiert.
- Sicherheitspatches und Updates: Stellen Sie sicher, dass Docker-Engines, Host-Betriebssysteme und alle Docker-Images regelmäßig auf Sicherheitsupdates überprüft und aktualisiert werden, damit potenzielle Sicherheitslücken minimiert werden.
- Überwachung und Protokollierung: Nutzen Sie Überwachungs- und Protokollierungswerkzeuge, um die Leistung von Containern zu überwachen, unerwartete Ereignisse zu erkennen und Proaktivität bei der Wartung zu fördern.
- Externes Backup: Implementieren Sie Routinen für externe Backups wichtiger Daten aus Docker-Containern heraus. Dies könnte durch regelmäßiges Sichern von Datenbankinhalten oder Konfigurationsdateien erfolgen.
- Manuelle Überprüfung vor der Entfernung: Überprüfen Sie sorgfältig, ob Sie bestimmte Ressourcen nicht mehr benötigen, bevor Sie diese entfernen. So minimieren Sie das Risiko versehentlicher Datenverluste oder Unterbrechungen laufender Prozesse.
Wenn Sie gerade erst in Docker einsteigen, empfehlen wir Ihnen unser umfangreiches Docker Tutorial.
- Kostengünstige vCPUs und leistungsstarke dedizierte Cores
- Höchste Flexibilität ohne Mindestvertragslaufzeit
- Inklusive 24/7 Experten-Support