# 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](https://www.ionos.at/digitalguide/server/knowhow/was-ist-docker/)-Ressourcen **systematisch zu bereinigen** und somit mehr Speicher zu gewinnen. Wenn [Docker-Container](https://www.ionos.at/digitalguide/server/knowhow/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:

```bash
docker system prune
```

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:

```bash
docker system prune -f
```

**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:

```bash
docker ps -a
docker images
docker volume ls
docker network ls
```

### Docker `prune` Optionen

Die folgende Tabelle gibt Ihnen eine Übersicht über die verschiedenen Optionen von `docker system prune`.

<table>
  <thead>
    <tr>
      <th>Option</th>
      <th>Beschreibung</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`--all, -a`</td>
      <td>Entfernt alle unbenutzten Docker-Ressourcen.</td>
    </tr>
    <tr>
      <td>`--force, -f`</td>
      <td>Führt die Bereinigung ohne Benutzerbestätigung durch.</td>
    </tr>
    <tr>
      <td>`--volumes`</td>
      <td>Entfernt ungenutzte Volumes.</td>
    </tr>
    <tr>
      <td>`--filter, -f`</td>
      <td>Erlaubt das Filtern der zu entfernenden Ressourcen nach Kriterien.</td>
    </tr>
    <tr>
      <td>`--help`</td>
      <td>Zeigt eine Hilfe zur Verwendung des Befehls an.</td>
    </tr>
  </tbody>
</table>

## 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:**

```bash
docker <command> prune --filter "filter=<value>"
```

**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.

```bash
docker <command> prune --filter "until=<duration>"
```

**Beispiel:** Alle gestoppten Container entfernen, die älter als 24 Stunden sind

```bash
docker container prune --filter "until=24h"
```

- `label`: Filtert Ressourcen basierend auf ihren Docker-Labels

```bash
docker <command> prune --filter "label=<label>"
```

**Beispiel:** Alle ungenutzten Volumes bereinigen, die das Label `mylabel` haben

```bash
docker volume prune --filter "label=mylabel"
```

- `dangling`: Filtert Ressourcen, die nicht mehr von einem Container verwendet werden

```bash
docker <command> prune --filter "dangling=true"
```

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

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

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:

```bash
docker {resource} prune
```

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:

```bash
docker rm container1 container2
```

- `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.

```bash
docker container prune
```

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](https://www.ionos.at/digitalguide/server/knowhow/docker-image/) 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:

```bash
docker image prune [Options]
```

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.

```bash
docker image prune -a
```

- `-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.

```bash
docker image prune -f
```

### 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:

```bash
docker image prune -a --force
```

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.

```bash
docker volume prune
```

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:

```bash
docker volume rm volume_name
```

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:

```bash
docker network prune [OPTIONS]
```

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](https://www.ionos.at/digitalguide/server/konfiguration/docker-tutorial-installation-und-erste-schritte/).


This is a markdown version of: [https://www.ionos.at/digitalguide/server/konfiguration/docker-prune/](https://www.ionos.at/digitalguide/server/konfiguration/docker-prune/) for AI/LLM consumption.