So entfernen Sie Docker-Images

Docker hat die Art und Weise, wie wir Anwendungen entwickeln, verpacken und bereitstellen, revolutioniert, indem es die Leistungsfähigkeit der Containerisierung nutzt. Wenn Sie mit Docker arbeiten, werden Sie im Laufe der Zeit zwangsläufig eine große Anzahl von Bildern ansammeln. Diese Bilder können erheblichen Speicherplatz beanspruchen und die Verwaltung Ihrer Entwicklungsumgebung erschweren. In diesem umfassenden Leitfaden untersuchen wir verschiedene Methoden zum effektiven Entfernen von Docker-Images und helfen Ihnen, Ihr System organisiert zu halten und wertvollen Speicherplatz zurückzugewinnen.

Inhaltsverzeichnis

Umschalten

Docker-Images verstehen

Bevor wir uns mit dem Entfernen von Docker-Images befassen, nehmen wir uns einen Moment Zeit, um zu verstehen, was sie sind und wie sie funktionieren. Docker-Images sind schreibgeschützte Vorlagen, die die erforderlichen Dateien, Bibliotheken und Konfigurationen zum Ausführen einer Anwendung enthalten. Sie bestehen aus einer Reihe von Schichten, wobei jede Schicht eine bestimmte Reihe von Änderungen oder Ergänzungen zur vorherigen Schicht darstellt. Mehrere Bilder können dieselben zugrunde liegenden Ebenen nutzen, was zur Optimierung der Speicherung beiträgt und Duplikate reduziert.

Docker-Images werden auf der Festplatte gespeichert und verbrauchen proportional zu ihrer Größe Speicherplatz. Wenn Sie neue Images abrufen, Container erstellen und benutzerdefinierte Images erstellen, kann die Anzahl der Images auf Ihrem System schnell wachsen. Aus diesem Grund ist es wichtig, regelmäßig ungenutzte und veraltete Images zu entfernen, um eine saubere und effiziente Docker-Umgebung aufrechtzuerhalten.

Identifizieren der zu entfernenden Bilder

Der erste Schritt beim Entfernen von Docker-Images besteht darin, zu ermitteln, welche Images nicht mehr benötigt werden. Docker bietet den Befehl docker images, um alle derzeit auf Ihrem System verfügbaren Bilder aufzulisten. Wenn Sie diesen Befehl ausführen, wird eine Ausgabe ähnlich der folgenden angezeigt:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myapp               latest              abc123def456        3 days ago          200MB
nginx               1.21                789012ghi345        2 weeks ago         150MB
<none>              <none>              567890jkl123        1 month ago         100MB

Jede Zeile stellt ein Bild dar und die Spalten enthalten wichtige Informationen:

  • REPOSITORY: Der Name des Bild-Repositorys.
  • TAG: Das mit dem Bild verknüpfte Tag, das seine Version oder Variante angibt.
  • IMAGE ID: Die eindeutige Kennung des Bildes.
  • CREATED: Der Zeitstempel, als das Bild erstellt wurde.
  • SIZE: Die Größe des Bildes auf der Festplatte.

Berücksichtigen Sie die folgenden Faktoren, um Bilder zu identifizieren, die sicher entfernt werden können:

  • Baumelnde Bilder: Hängende Bilder sind Bilder ohne Tags, die von keinem Container referenziert werden. Sie sind in der Regel das Ergebnis der Erstellung neuer Bilder, ohne sie mit Tags zu versehen, oder wenn ein neues Bild mit demselben Tag wie ein vorhandenes Bild erstellt wird. Hängende Bilder werden mit gekennzeichnet <none> in den Spalten REPOSITORY und TAG.
  • Unbenutzte Bilder: Nicht verwendete Bilder sind solche, die derzeit von keinem Container verwendet werden. Sie wurden möglicherweise in der Vergangenheit verwendet, werden aber nicht mehr benötigt. Sie können ungenutzte Images identifizieren, indem Sie die Liste der Images mit der Liste der ausgeführten und gestoppten Container vergleichen.
  • Veraltete Bilder: Im Laufe der Zeit verfügen Sie möglicherweise über mehrere Versionen desselben Bildes, die durch unterschiedliche Tags gekennzeichnet sind. Es empfiehlt sich, veraltete Versionen, die nicht mehr benötigt werden, zu entfernen und nur die neuesten oder spezifischen Versionen beizubehalten, von denen Ihre Anwendungen abhängen.
  • Um Bilder nach bestimmten Kriterien zu filtern, können Sie die verwenden --filter Flag mit dem Docker-Images-Befehl. Um beispielsweise nur freie Bilder aufzulisten, können Sie Folgendes ausführen:

    docker images --filter "dangling=true"

    Ebenso können Sie Bilder mithilfe geeigneter Filterausdrücke nach Repository-Name, Tag-Name oder Erstellungsdatum filtern.

    Einzelne Bilder entfernen

    Sobald Sie die Bilder identifiziert haben, die Sie entfernen möchten, können Sie das verwenden docker rmi Befehl, um sie zu löschen. Die grundlegende Syntax zum Entfernen eines Bildes lautet wie folgt:

    docker rmi (IMAGE ID or REPOSITORY:TAG)

    Sie können entweder das Eindeutige angeben IMAGE ID oder der REPOSITORY:TAG Kombination, um das Bild zu identifizieren, das Sie entfernen möchten.

    Um beispielsweise ein Bild mit der ID abc123def456 zu entfernen, würden Sie Folgendes ausführen:

    docker rmi abc123def456

    Wenn Sie ein Bild anhand seines Repositorys und Tags entfernen möchten, können Sie den folgenden Befehl verwenden:

    docker rmi myapp:latest

    Es ist wichtig zu beachten, dass Sie ein Bild nicht entfernen können, wenn es derzeit von einem oder mehreren Containern verwendet wird. Wenn Sie versuchen, ein solches Image zu entfernen, zeigt Docker eine Fehlermeldung an, die darauf hinweist, dass das Image verwendet wird. Um ein verwendetes Image zu entfernen, müssen Sie zunächst die zugehörigen Container anhalten und entfernen.

    Wenn Sie das Entfernen eines Bildes zusammen mit allen zugehörigen Containern erzwingen möchten, können Sie dies verwenden -f oder --force Flagge mit dem docker rmi Befehl. Seien Sie vorsichtig, wenn Sie diese Flagge verwenden, da sie die Behälter entfernt, ohne dass Sie die Möglichkeit haben, sie ordnungsgemäß zu stoppen.

    docker rmi -f abc123def456

    Mehrere Bilder entfernen

    In manchen Fällen möchten Sie möglicherweise mehrere Bilder gleichzeitig entfernen. Mit Docker können Sie mehrere Bild-IDs angeben oder repository:tag Kombinationen als Argumente für die docker rmi Befehl.

    Um beispielsweise drei Bilder mit den IDs abc123def456, 789012ghi345 und 567890jkl123 zu entfernen, können Sie Folgendes ausführen:

    docker rmi abc123def456 789012ghi345 567890jkl123

    Wenn Sie eine große Anzahl von Bildern basierend auf einem bestimmten Muster entfernen möchten, können Sie Befehlszeilentools wie verwenden grep Und awk in Kombination mit docker rmi. Um beispielsweise alle Bilder zu entfernen, deren Repository-Name mit „myapp“, können Sie den folgenden Befehl verwenden:

    docker images | grep "^myapp" | awk '{print $3}' | xargs docker rmi

    Dieser Befehl leitet die Ausgabe von Docker-Images an grep weiter, wodurch die Zeilen gefiltert werden, die mit „“ beginnen.myapp„. Der Befehl awk extrahiert die dritte Spalte (Bild-ID) aus der gefilterten Ausgabe und xargs übergibt die Bild-IDs als Argumente an docker rmi.

    Bilder beschneiden

    Docker bietet eine bequeme Möglichkeit, hängende und nicht verwendete Bilder in großen Mengen mit dem Docker-Image-Prune-Befehl zu entfernen. Wenn Sie diesen Befehl ausführen, identifiziert Docker alle freien Bilder von Ihrem System und entfernt sie.

    docker image prune

    Um nicht nur baumelnde Bilder, sondern auch alle nicht verwendeten Bilder (Bilder, auf die von keinem Container verwiesen wird) zu entfernen, können Sie die verwenden -a oder --all Flagge:

    docker image prune -a

    Standardmäßig, docker image prune Entfernt Bilder, die von keinem Container verwendet werden, unabhängig von ihrem Alter. Sie können jedoch die verwenden --filter Flag, um zusätzliche Kriterien zum Beschneiden von Bildern anzugeben. Um beispielsweise nicht verwendete Bilder zu entfernen, die älter als 24 Stunden sind, können Sie Folgendes ausführen:

    docker image prune --filter "until=24h"

    Zusätzlich zu docker image pruneDocker stellt auch das zur Verfügung docker system prune Befehl, der alle nicht verwendeten Bilder, Container, Netzwerke und den Build-Cache entfernt. Dieser Befehl ist nützlich, wenn Sie eine umfassende Bereinigung Ihrer Docker-Umgebung durchführen möchten.

    docker system prune

    Seien Sie vorsichtig bei der Verwendung docker system pruneda dadurch alle ungenutzten Ressourcen entfernt werden, einschließlich gestoppter Container und ungenutzter Netzwerke.

    Entfernen von Bildern, die von Containern verwendet werden

    Wie bereits erwähnt, können Sie ein Image, das gerade von einem oder mehreren Containern verwendet wird, nicht direkt entfernen. Um ein solches Image zu entfernen, müssen Sie zunächst die abhängigen Container anhalten und entfernen.

    Hier ist eine Schritt-für-Schritt-Anleitung zum Entfernen eines Images, das von Containern verwendet wird:

  • Listen Sie alle laufenden Container mit dem auf docker ps Befehl:
  • docker ps
  • Stoppen Sie die Container, die das Image verwenden, das Sie entfernen möchten. Sie können einen Container mithilfe von stoppen docker stop Befehl gefolgt von der Container-ID oder dem Namen:
  • docker stop (CONTAINER ID or NAME)
    
  • Sobald die Container gestoppt sind, entfernen Sie sie mit dem Docker-RM-Befehl:
  • docker rm (CONTAINER ID or NAME)
  • Nachdem Sie die abhängigen Container entfernt haben, können Sie das Bild nun mithilfe von entfernen docker rmi Befehl wie zuvor beschrieben.
  • Es ist wichtig zu beachten, dass das Stoppen und Entfernen von Containern zum Verlust aller in diesen Containern gespeicherten Daten führt, es sei denn, Sie haben die Daten ordnungsgemäß mithilfe von Volumes oder Bind-Mounts gespeichert.

    Abschluss

    Die Verwaltung von Docker-Images ist für die Aufrechterhaltung einer sauberen und effizienten Entwicklungsumgebung von entscheidender Bedeutung. Durch das regelmäßige Entfernen ungenutzter, veralteter und herunterhängender Images können Sie wertvollen Speicherplatz zurückgewinnen und Ihr Docker-System organisiert halten. In diesem umfassenden Leitfaden werden verschiedene Methoden zum Entfernen von Docker-Images behandelt, darunter das Entfernen einzelner Images, das Entfernen mehrerer Images, das Bereinigen von Images und der Umgang mit Images, die von Containern verwendet werden.

    Denken Sie daran, Best Practices zu befolgen, z. B. Bilder sinnvoll zu kennzeichnen, bestimmte Versions-Tags zu verwenden und die Bildbereinigung in Ihre CI/CD-Pipelines zu integrieren. Erwägen Sie außerdem die Nutzung automatisierter Bereinigungstools, um den Prozess der Verwaltung von Docker-Images zu optimieren.

    Durch die Implementierung dieser Techniken und Best Practices können Sie Ihre Docker-Images effektiv verwalten, die Speichernutzung optimieren und eine saubere und effiziente Docker-Umgebung für Ihre Entwicklungs- und Bereitstellungsanforderungen sicherstellen.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert