Entfernen Sie Docker-Images, Volumes und Container in Sekunden
Veröffentlicht: 2023-03-03Docker ist eine Software-Containerisierungstechnologie, die Entwicklern hilft, Anwendungen auf unterschiedlichen Plattformen zu erstellen und bereitzustellen, die vom Desktop bis zur Cloud reichen.
Ein Snapshot – oder Blueprint – des Quellcodes, der Abhängigkeiten und der Tools, die zum Erstellen einer Anwendung in einem Docker-Container erforderlich sind, wird als Image bezeichnet. Docker-Anwendungen, die persistente Daten benötigen, können sich auf Speicher namens Volumes verlassen, die vom zugrunde liegenden Betriebssystem unabhängig sind.
Eine effektive Organisation von Images, Volumes und Containern ist bei der Verwendung von Docker wichtig. Ungenutzte Inkarnationen dieser Assets können sich ansammeln, wertvollen Speicherplatz belegen und schließlich die Systemleistung beeinträchtigen.
In diesem Artikel werden verschiedene Möglichkeiten zur Aufrechterhaltung der Systemorganisation durch Löschen von Images (sowohl einzeln als auch alle gleichzeitig), Volumes und Container untersucht. Und wir werden die docker
Befehlszeilenschnittstelle (CLI) verwenden, um diese Aufgaben schnell zu erledigen.
So entfernen Sie Docker-Images
Das Entfernen veralteter oder unnötiger Images aus Docker ist für die Aufrechterhaltung eines sauberen und organisierten Systems unerlässlich. Sehen wir uns an, wie die CLI bestimmte Bilder zum Entfernen auswählen kann.
Schauen wir uns zunächst die Bilder in einer Docker-Umgebung mit dem Befehl docker image ls
an:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 60 seconds ago 7.05MB <none> <none> 85b412789704 2 days ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
Das Auflisten von Bildern oben hat Bilder mit den Namen my_image und demo enthüllt, die beide mit dem Tag Latest versehen sind. Ein drittes Bild hat keinen Namen oder Tag. In diesem Fall handelt es sich um ein „hängendes“ Image: eines, das derzeit nicht von einem Container verwendet wird. Dieses baumelnde Bild resultierte aus einer Neuerstellung von my_image (ein häufiges Szenario). Die vorherige Version des Abbilds befindet sich noch im Dateisystem, wird jedoch derzeit nicht verwendet.
Die Auflistung zeigt auch die ersten 12 Zeichen der 64-stelligen ID jedes Bildes, Erstellungsdaten und den Speicherplatz, den die Bilder verbrauchen.
Entfernen Sie alle nicht verwendeten Bilder
Im obigen Auflistungsbeispiel haben wir ein baumelndes Bild. Es ist jedoch möglich, dass ein Bild ohne Namen oder Tag aktiv ist. Beispielsweise hätte es verwendet werden können, um einen Container zu starten, indem auf seine ID verwiesen wird.
Um alle Bilder, die wirklich baumeln, sicher zu löschen, können Sie den docker image prune
verwenden:
$ docker image prune WARNING! This will remove all dangling images. Are you sure you want to continue? [y/N] y Deleted Images: deleted: sha256:85b412789704c17e9c5e7edc97b2f64c748bbdae7eaa44d3fe2cc21a87acad3d Total reclaimed space: 7.05MB
Wir listen unsere Bilder erneut auf, um die Ergebnisse unserer Arbeit zu sehen:
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_image latest 2cbc27836df4 70 seconds ago 7.05MB demo latest 26d80cd96d69 15 months ago 28.5MB
Nach dem Pruning-Vorgang ist das Bild ohne Namen oder Tag verschwunden.
Entfernen Sie ein bestimmtes Bild nach Namen
Sie können ein Bild zum Entfernen auswählen, indem Sie auf seinen Namen verweisen:
$ docker image rm <image_name>
Hinweis: Noch verwendete Bilder können nicht einfach entfernt werden. Sie sollten die laufenden Container, die die Images verwenden, stoppen oder entfernen. Obwohl es normalerweise nicht empfohlen wird, können Sie das Entfernen eines aktiven Bildes mit dem Flag -f
erzwingen:
$ docker image rm <image_name> -f
Verwenden der rmi-Kurzschrift zum Entfernen von Bildern
Die Docker-CLI hat einen verkürzten Ansatz zum Entfernen von Bildern im Alias rmi
. Die Verwendung zum Entfernen eines Bildes nach Namen sieht folgendermaßen aus:
$ docker rmi demo Untagged: demo:latest Deleted: sha256:2cbc27836df4a7707e746e28368f1fdecfefbfb813aae06611ca6913116b80b4
Wir verwenden rmi
für die folgenden Beispiele zum Entfernen von Bildern.
Alle Bilder ohne Tags entfernen
Ungetaggte Bilder belegen immer noch wertvollen Speicherplatz, was Ihr System mit der Zeit immer mehr verlangsamt.
Um alle Bilder ohne Tags in Docker zu entfernen, verwenden Sie den Befehl docker rmi
mit einem Filter. Sie können Filter basierend auf bestimmten Kriterien mit der Option -f
bereitstellen (nicht zu verwechseln mit dem Flag -f
, das für image rm
verfügbar ist, um eine Aktion zu erzwingen).
Der Filter dangling=true
wird verwendet, um ungetaggte Bilder zu identifizieren:
$ docker rmi $(docker images -f "dangling=true" -q)
Die Option -q
im obigen Befehl zeigt die Bild-IDs aller Bilder ohne Tags an. Alle diese IDs werden dann als Argumente an docker rmi
übergeben, um sie zu entfernen.
Dieser Filter verwendet das Schlüsselwort „Dangling“, aber wie oben erwähnt, könnten einige Bilder ohne Tags tatsächlich aktiv sein. Sie werden gewarnt, wenn ein von diesem Filter ausgewähltes Bild nicht wirklich baumelt.
Entfernen Sie ein bestimmtes Bild nach ID
Sie können den Befehl docker rmi
verwenden, um ein bestimmtes Bild zu entfernen, indem Sie auf seine ID verweisen:
$ docker rmi <image_id>
Entfernen Sie ein bestimmtes Bild nach Name und Tag
Sie können ein bestimmtes Bild zusammen mit seinem Namen und Tag löschen, indem Sie den docker rmi
verwenden.
Wenn Sie beispielsweise mehrere Bilder mit demselben Namen, aber unterschiedlichen Tags haben, können Sie ein bestimmtes Bild löschen, indem Sie dieses Format verwenden:
$ docker rmi <image_name>:<tag>
Diese Methode ist praktisch, wenn Sie eine bestimmte Version eines Images löschen möchten, anstatt alle Images zu löschen, die sich auf ein Repository beziehen.
Entfernen Sie alle Bilder mit dem neuesten Tag
In Docker bezieht sich das „latest“-Tag auf die neueste Version eines bestimmten Docker-Images. Das neueste Tag wird häufig als Standardtag für Docker-Images verwendet. Es wird automatisch dem neuesten Build eines Images zugewiesen, sofern nicht ausdrücklich ein anderes Tag angegeben wird.
Docker bietet einen Befehl zum Entfernen aller Bilder mit dem „neuesten“ Tag:
$ docker rmi $(docker images | grep "latest" | awk '{print $3}')
Der obige Befehl ist in 2 Teile unterteilt. Zuerst ruft es die Liste der Bild-IDs ab und übergibt diese Liste dann als Argument an den Befehl docker rmi
.
Bilder aus einem Remote-Repository entfernen
Um ein Image aus einem Remote-Repository wie Docker Hub zu entfernen, müssen Sie sich zuerst mit der Docker-CLI bei dem Konto anmelden.
Sobald Sie angemeldet sind, müssen Sie nur noch den Befehl docker rmi
verwenden, um das Image zu entfernen. Der Befehl docker rmi
kann sowohl lokale als auch Remote-Images entfernen:
docker rmi my_repo/my_image_tag
Insbesondere können Sie nur Bilder entfernen, die in das Repository übertragen wurden. Ebenso können Sie keine Bilder entfernen, die von laufenden Containern verwendet werden.
Mehrere Bilder aus einem Remote-Repository entfernen
Um mehrere Images aus einem Remote-Repository zu entfernen, können Sie den Befehl docker rmi
gefolgt von den Image-IDs oder -Tags verwenden. Zum Beispiel:
docker rmi my_repo/image_tag_1 my_repo/image_tag_2 my_repo/image_tag_3
Dadurch werden die drei Bilder mit den Tags image_tag_1
, image_tag_2
und image_tag_3
aus dem Repository my_repo
entfernt.
So entfernen Sie Docker-Volumes
Docker-Volumes können viel Speicherplatz beanspruchen, insbesondere wenn sie große Datenmengen oder mehrere Sicherungen enthalten. Indem Sie nicht mehr benötigte Volumes entfernen, reduzieren Sie das Risiko von Datenschutzverletzungen und stellen sicher, dass sensible Daten nicht für unbefugte Benutzer zugänglich sind. Das regelmäßige Entfernen von Volumes kann auch die Docker-Umgebung auf dem neuesten Stand halten und Probleme durch veraltete Daten verhindern.
Diese Befehle zerstören dauerhaft alle auf einem Volume gespeicherten Daten, verwenden Sie sie also mit Vorsicht.
Entfernen Sie alle nicht verwendeten Volumes
In Docker ist das Entfernen ungenutzter Volumes genauso wichtig wie das Entfernen von Images oder Containern.
Um Festplattenspeicher freizugeben, können Sie den Befehl docker volume prune
verwenden.
Entfernen Sie ein bestimmtes Volume nach Namen
Das Entfernen eines bestimmten Volumes in Docker ist nützlich, um nicht verwendete Volumes zu entfernen. Hier ist der Befehl zum Entfernen eines Volumes:
docker volume rm my_volume_name
Mit dem obigen Befehl wird das Volume my_volume_name entfernt. Docker erzeugt einen Fehler, wenn Sie versuchen, ein verwendetes Volume zu entfernen. Sie können verfügbare Volumes mit dem docker volume ls
überprüfen.
So entfernen Sie Docker-Container
Wenn Sie mehr mit Docker arbeiten, können Sie viele ungenutzte Container ansammeln, die die Festplattenressourcen belegen. Wenn Sie sie nicht löschen, können sie sich im Laufe der Zeit ansammeln und wertvolle Festplattenressourcen beanspruchen, Ihr System verlangsamen und Sie möglicherweise gefährden.
Alle angehaltenen Container entfernen
Der Befehl docker container prune
kann alle gestoppten Container in Docker löschen. Hier erstellt der Befehl eine Liste aller gestoppten Container, die entfernt werden, und bittet um Bestätigung, bevor er fortfährt. Dies hilft dabei, Speicherplatz zurückzugewinnen und eine saubere und organisierte Docker-Umgebung aufrechtzuerhalten, während Sie gleichzeitig überprüfen können, ob Sie nichts Wichtiges verlieren:
$ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: 4df4c47c4df4 d35bcec20bce
Beachten Sie, dass mit diesem Befehl nur angehaltene Container entfernt werden können. Wenn Sie laufende Container entfernen müssen, müssen Sie sie zuerst stoppen oder einen anderen Befehl verwenden.
Entfernen Sie einen bestimmten Container nach ID
In Docker können Sie einen bestimmten Container anhand der ID entfernen, indem Sie den docker rm command
zusammen mit der Container-ID verwenden. Rufen Sie zuerst die gesamte Container-ID mit dem docker ps command
ab:
$ docker ps -a -q 1ce3cdeb4035 06b79541e25c fa98f1804e3e $ docker rm 1ce3cdeb4035
Der obige Befehl funktioniert nur, wenn sich der Container in einem gestoppten Zustand befindet. Wenn der Container ausgeführt wird, müssen Sie ihn mit dem Flag -f zwangsweise entfernen:
$ docker rm -f 1ce3cdeb4035
Entfernen Sie einen bestimmten Container nach Namen
Docker bietet einen Mehrzweck- docker rm
Befehl, um beide Container nach Name und ID zu entfernen.
Wenn Sie beispielsweise einen Container namens web_server haben, können Sie ihn mit dem folgenden Befehl entfernen:
$ docker rm web_server
Zunächst ist es wichtig, den Container zu stoppen. Docker stellt den Befehl docker stop
bereit, um einen bestimmten Container zu stoppen.
Entfernen Sie alle laufenden Container
Um alle laufenden Container zu löschen, können Sie den Befehl docker rm
verwenden:
$ docker rm $(docker ps -q)
Die Verwendung von docker ps -q
listet die IDs der laufenden Container auf. Danach werden die IDs an den Befehl docker rm
übergeben, der alle Container entfernt.
Beachten Sie, dass dieser Befehl nur laufende Container entfernt. Wenn Sie alle Container entfernen möchten, einschließlich gestoppter, können Sie stattdessen den folgenden Befehl verwenden:
$ docker rm $(docker ps -a -q)
Zusammenfassung
In diesem Artikel wurde erläutert, wie Docker-Images, -Volumes und -Container entfernt werden. Sie haben verschiedene Methoden gelernt, um ein sauberes und organisiertes System aufrechtzuerhalten. Es behandelte Befehle zum Entfernen aller nicht verwendeten, nicht gekennzeichneten oder bestimmten Bilder nach ID oder Name. Sie haben auch Befehle zum Löschen aller angehaltenen Container oder eines bestimmten Containers nach ID oder Name gelernt.
Das Entfernen von Docker-Images, -Volumes und -Containern ist ein unkomplizierter Vorgang, der Ihnen dabei helfen kann, ungenutzte Komponenten zu verwalten, wertvollen Speicherplatz zurückzugewinnen und häufig die Systemleistung zu verbessern.
Es ist diese Einfachheit, die Entwickler zu Docker hinzieht, und es gibt keinen einfacheren Weg, eine in Docker entwickelte Anwendung bereitzustellen, als mit der Anwendungs-Hosting-Plattform von Kinsta. Sie können es jetzt kostenlos ausprobieren.