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
bash

Standardmäß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
bash

Tipp: 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
bash

Docker 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>"
bash

Zu den verschiedenen Filteroptionen gehören:

  • until: Filtert Ressourcen basierend auf ihrem Erstellungsdatum. Dabei kann <duration> ein numerischer Wert mit einer Einheit wie h (Stunden), m (Minuten) oder s (Sekunden) sein.
docker <command> prune --filter "until=<duration>"
bash

Beispiel: 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>"
bash

Beispiel: 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"
bash

Beispiel: Alle nicht mehr verwendeten (dangling) Images entfernen*

docker image prune --filter "dangling=true"
bash

Neben den oben genannten Hauptfiltern gibt es auch spezifischere Filteroptionen je nach Ressourcentyp:

  • before und since 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 Beispiel exited=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
bash

Ersetzen 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 Befehl docker 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 ist docker 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
bash

Hierbei 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]
bash

Mö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
bash

Alle 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
bash

Sorgen 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
bash

Dieser 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
bash

Stellen 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]
bash

Docker 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.
Tipp

Wenn Sie gerade erst in Docker einsteigen, empfehlen wir Ihnen unser umfangreiches Docker Tutorial.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kostengünstige vCPUs und leistungsstarke dedizierte Cores
  • Höchste Flexibilität ohne Mindestvertragslaufzeit
  • Inklusive 24/7 Experten-Support
War dieser Artikel hilfreich?
Page top