GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Vollständige Anleitung zum Entfernen von Docker-Images

Wenn Sie weiterhin Docker-Images erstellen, wird Ihnen bald der Speicherplatz ausgehen. Durch das Löschen alter und nicht verwendeter Docker-Images wird viel Speicherplatz für Sie frei.

In diesem Artikel werde ich verschiedene Szenarien zum Löschen von Docker-Images von Ihrem System besprechen.

Möglichkeiten zum Entfernen von Docker-Images

Überprüfen Sie zunächst die auf Ihrem System vorhandenen Docker-Images mit diesem Befehl:

docker images

Die Ausgabe zeigt alle Docker-Bilder und ihre Bild-ID. Sie benötigen diesen Image-Namen (in der Repository-Spalte) oder die Image-ID, um ein Docker-Image von Ihrem System zu löschen.

[email protected]:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              67e34c1c9477        2 weeks ago         114MB
ubuntu              latest              775349758637        6 weeks ago         64.2MB

Mit der Image-ID können Sie das Docker-Image folgendermaßen entfernen:

docker rmi image_name_or_id

Sie können auch diesen Befehl verwenden, da beide gleich sind:

docker image rm image_id

So könnte die Ausgabe aussehen:

[email protected]:~$ docker rmi 67e34c1c9477
Untagged: debian:latest
Untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
Deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
Deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb

Wenn Sie die Bild-ID verwenden, werden alle mit dieser ID verknüpften Bilder entfernt.

Mit einem Container verknüpftes Docker-Image entfernen

Das Leben wäre so viel einfacher gewesen, wenn Sie Docker-Bilder einfach so entfernen könnten. Aber das kommt nicht oft vor.

Wenn Sie Container mit dem Docker-Image verknüpft haben, treten einige Fehler auf, wenn Sie versuchen, das Image zu entfernen.

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (cannot be forced) - image is being used by running container 13dc0f4226dc

Sie müssen den Container zuerst stoppen:

[email protected]:~$ docker stop 13dc0f4226dc
13dc0f4226dc

Das Problem ist, dass selbst wenn Sie den Container stoppen, er sich immer noch beschwert, wenn Sie versuchen, das Bild zu entfernen:

[email protected]:~$ docker rmi 67e34c1c9477
Error response from daemon: conflict: unable to delete 67e34c1c9477 (must be forced) - image is being used by stopped container 5ced86b1fcee

Hier haben Sie zwei Möglichkeiten:

  • Entfernen eines Docker-Images erzwingen (zugehöriger Container bleibt im System)
  • Entfernen Sie den zugehörigen Container und entfernen Sie dann das Docker-Image

Um das Entfernen eines Docker-Images zu erzwingen, können Sie die Option -f verwenden:

docker rmi -f image_id

Um einen Container und dann das Bild zu entfernen, können Sie so etwas verwenden:

docker rm container_id
docker rmi image_id

Mit mehreren Containern verknüpftes Docker-Image entfernen

Das Leben wäre immer noch ein bisschen einfacher, wenn ein Docker-Image nur einem Container zugeordnet wäre. Aber einem Image können mehrere Container zugeordnet sein, und das Entfernen dieser Art von Docker-Image wird mühsam.

Sie sehen einen Fehler wie diesen:

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (must be forced) - image is referenced in multiple repositories

Zuerst müssen Sie alle Container finden, die einem Bildnamen (nicht ID) zugeordnet sind.

docker ps -a -q --filter ancestor=docker_image_name
  • -a-Option zeigt alle laufenden und gestoppten Container an.
  • -q-Option zeigt nur die Container-ID an.

Und dann musst du sie alle stoppen. Sie können die Container-IDs einzeln verwenden, aber das ist zu zeitaufwändig. Sie können die Magie von Pipe und xargs verwenden, um alle mit einem Bild verknüpften Container zu stoppen:

docker ps -a -q --filter ancestor=ubuntu | xargs docker stop

Und dann können Sie entweder die angehaltenen Container entfernen oder das Entfernen des Images erzwingen (wie Sie im vorherigen Abschnitt gesehen haben).

Wenn Sie alle mit einem Image verknüpften Container entfernen möchten, führen Sie einfach diesen Befehl aus:

docker ps -a -q --filter ancestor=ubuntu | xargs docker rm

Und jetzt können Sie das Docker-Image mit dem zuvor in diesem Tutorial gezeigten Befehl entfernen.

Mehrere Docker-Images gleichzeitig entfernen

Sie können auch mehrere Docker-Images mit einem einzigen Befehl entfernen. Es ist dasselbe wie beim vorherigen Befehl. Sie müssen nur die Bild-IDs oder die Bildnamen angeben.

docker rmi image_id_1 image_id_2 image_id_3

Natürlich müssen Sie alle laufenden Container anhalten, die mit den Bildern verknüpft sind.

Entfernen Sie alle unbenutzten und losen Docker-Images auf einmal

Bevor Sie das sehen, lassen Sie mich erklären, was ungenutzte und baumelnde Bilder sind:

Jedes Docker-Image, dem Container jeglicher Art zugeordnet sind (gestoppt oder ausgeführt), ist ein verwendetes Image. Wenn einem Docker-Image keine Container zugeordnet sind, wird es zu einem unbenutzten Docker-Image.

Ein baumelndes Docker-Image „bedeutet, dass Sie den neuen Build des Images erstellt haben, ihm jedoch kein neuer Name gegeben wurde. So werden die alten Bilder, die Sie haben, zum baumelnden Bild. Diese alten Images sind diejenigen, die nicht getaggt sind und in ihrem Namen anzeigen, wenn Sie den Befehl ‚docker images‘ ausführen.“

Wenn Sie die baumelnden Bilder entfernen möchten, können Sie die Prune-Option verwenden:

docker image prune

Wenn Sie sowohl unbenutzte als auch baumelnde Bilder auf einmal entfernen möchten, können Sie prune mit der Option -a:

verwenden
docker image prune -a

Sie sollten den Platz sehen, der am Ende der Ausgabe freigegeben wird:

[email protected]:~$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: ubuntu:latest
untagged: [email protected]:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
untagged: debian:latest
untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb
untagged: fedora:latest
untagged: [email protected]:d4f7df6b691d61af6cee7328f82f1d8afdef63bc38f58516858ae3045083924a
deleted: sha256:f0858ad3febdf45bb2e5501cb459affffacef081f79eaa436085c3b6d9bd46ca
deleted: sha256:2ae3cee18c8ef9e0d448649747dab81c4f1ca2714a8c4550eff49574cab262c9

Total reclaimed space: 308.3MB

Sie können mit dem Prune-Befehl ein bisschen schlau sein und nur alte, unbenutzte und baumelnde Bilder entfernen. Wenn Sie also diejenigen entfernen möchten, die älter als 24 Stunden sind, verwenden Sie es wie folgt:

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

Entfernen Sie alle Docker-Images von Ihrem System

Vielleicht befinden Sie sich in einer Testumgebung und möchten neu beginnen, indem Sie alle Docker-Images entfernen.

Um alle Docker-Images zu entfernen, müssen Sie zuerst alle laufenden Container stoppen.

docker ps -a -q | xargs docker rm

Jetzt können Sie alle Bilder auf diese Weise löschen:

docker images -a -q | xargs docker rmi -f

Das ist es. Ich denke, das ist genug Referenzmaterial zum Entfernen von Docker-Images, und Sie sollten dieses Thema jetzt besser verstehen. Sie können sich auch das Tutorial zum Entfernen von Docker-Containern ansehen.

Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte unten einen Kommentar.


Docker
  1. Was ist ein Docker-Container:Eine Einführung für Anfänger

  2. So verschieben Sie Docker-Images zwischen Hosts

  3. So teilen Sie Docker-Images mit anderen

  4. Vollständiger Anfängerleitfaden für die Docker-Protokollierung

  5. So ändern Sie Docker-Images

Halten Sie Ihre Docker-Images mit Docker Image Prune überschaubar

So verwenden Sie Docker Commit zum Ändern von Container-Images

Docker-Befehle zum Verwalten des Containerlebenszyklus (Definitive Guide)

Teilen von Docker-Images auf Docker Hub

Einsteigerleitfaden für die Docker-Welt

So listen / suchen / ziehen Sie Docker-Images unter Linux