So beheben Sie den Fehler 'no such image' beim Entfernen von Docker-Images

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker ist eine leistungsstarke Containerisierungsplattform, die die Art und Weise, wie Entwickler Anwendungen erstellen, bereitstellen und verwalten, revolutioniert hat. Benutzer stoßen jedoch manchmal auf den Fehler 'no such image' (kein solches Image), wenn sie versuchen, Docker-Images zu entfernen. Dieses Lab führt Sie durch das Verständnis von Docker-Images, die Reproduktion des Fehlers in einer kontrollierten Umgebung und das Erlernen praktischer Techniken zur effektiven Behebung.

Am Ende dieses Labs werden Sie praktische Erfahrungen mit der Docker-Image-Verwaltung haben und in der Lage sein, häufige Image-bezogene Fehler selbstbewusst zu beheben.

Docker-Images verstehen

Beginnen wir mit der Erkundung von Docker-Images und gängigen Image-bezogenen Befehlen. Docker-Images sind schreibgeschützte Vorlagen, die zum Erstellen von Containern verwendet werden. Sie enthalten alle notwendigen Komponenten, die eine Anwendung zum Ausführen benötigt.

Überprüfen der Docker-Installation

Zuerst wollen wir überprüfen, ob Docker korrekt auf Ihrem System installiert ist und ausgeführt wird:

docker --version

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Docker version 20.10.21, build baeda1f

Lassen Sie uns auch überprüfen, ob der Docker-Daemon läuft:

docker info

Dieser Befehl zeigt systemweite Informationen über Ihre Docker-Installation an.

Docker-Images abrufen (Pulling Docker Images)

Lassen Sie uns nun einige Docker-Images von Docker Hub abrufen, um damit zu arbeiten:

docker pull ubuntu:20.04

Dieser Befehl lädt das Ubuntu 20.04 Image herunter. Sie sollten eine Fortschrittsausgabe ähnlich der folgenden sehen:

20.04: Pulling from library/ubuntu
ca1779a3256a: Pull complete
Digest: sha256:db8bf6f4fb351aa7a26e27ba2686cf8eb511a5c19b8c695210842adc8957aa27
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

Lassen Sie uns ein weiteres Image abrufen:

docker pull alpine:latest

Docker-Images auflisten (Listing Docker Images)

Um alle Images anzuzeigen, die Sie lokal auf Ihrem System haben, führen Sie aus:

docker images

Die Ausgabe sollte in etwa so aussehen:

REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
alpine        latest    e66264b98777   2 weeks ago     5.53MB
ubuntu        20.04     f8fe765559e5   4 weeks ago     72.8MB

Image-Details untersuchen (Inspecting Image Details)

Sie können detailliertere Informationen über ein Image mit dem Befehl inspect anzeigen:

docker inspect alpine:latest

Dies gibt ein JSON-Dokument mit detaillierten Informationen über das Image aus.

Nachdem Sie die Grundlagen von Docker-Images verstanden haben und einige Images auf Ihrem System haben, werden wir fortfahren, um den Fehler 'no such image' zu reproduzieren und dann zu beheben.

Reproduzieren des Fehlers 'no such image'

In diesem Schritt werden wir den Fehler 'no such image' absichtlich auslösen, um ihn besser zu verstehen. Dieser Fehler tritt typischerweise auf, wenn Sie versuchen, ein Image zu entfernen, das nicht existiert oder einen falschen Namen/Tag hat.

Erstellen eines Szenarios für den Fehler

Versuchen wir, ein Image zu entfernen, das nicht auf Ihrem System existiert:

docker rmi nonexistent-image:v1.0

Sie sollten die folgende Fehlermeldung sehen:

Error: No such image: nonexistent-image:v1.0

Dies ist der Fehler 'no such image', auf den wir uns in diesem Lab konzentrieren.

Verschiedene Szenarien verstehen

Es gibt mehrere gängige Szenarien, die zu diesem Fehler führen:

  1. Versuch, ein Image zu entfernen, das nicht existiert
  2. Verwendung eines falschen Image-Namens oder -Tags
  3. Tippfehler in der Image-ID oder im Namen
  4. Das Image wurde bereits entfernt

Lassen Sie uns eine weitere Instanz des Fehlers generieren, indem wir versuchen, ein Image mit dem falschen Tag zu entfernen:

docker rmi ubuntu:nonexistent-tag

Auch hier sehen Sie einen ähnlichen Fehler:

Error: No such image: ubuntu:nonexistent-tag

Image-Identifizierung in Docker

Docker-Images können auf drei Arten referenziert werden:

  1. Repository und Tag (z. B. ubuntu:20.04)
  2. Image-ID (z. B. f8fe765559e5)
  3. Image-Digest (ein SHA256-Hash)

Untersuchen wir die Image-IDs unserer abgerufenen Images:

docker images --no-trunc

Dies zeigt die vollständigen Image-IDs anstelle der gekürzten Versionen. Versuchen wir nun, ein Image mit einer teilweisen, aber falschen Image-ID zu entfernen:

docker rmi abc123

Sie sollten denselben Fehler 'no such image' sehen, da diese ID nicht mit einem Image in Ihrem System übereinstimmt.

Das Verständnis, wie Docker Images identifiziert, ist entscheidend für die Behebung des Fehlers 'no such image'. Im nächsten Schritt werden wir lernen, wie man diesen Fehler richtig behebt.

Beheben des Fehlers 'no such image'

Nachdem wir den Fehler verstanden haben, wollen wir praktische Methoden zu seiner Behebung erkunden. Der Schlüssel zur Behebung des Fehlers 'no such image' ist sicherzustellen, dass Sie die korrekte Image-Referenz verwenden.

Methode 1: Verfügbare Images überprüfen

Der erste Schritt zur Behebung des Fehlers besteht darin, zu überprüfen, welche Images tatsächlich auf Ihrem System verfügbar sind:

docker images

Dies zeigt alle auf Ihrem System vorhandenen Images an. Stellen Sie sicher, dass das Image, das Sie entfernen möchten, in dieser Liste erscheint.

Methode 2: Verwenden von Image-IDs

Wenn Sie sich über den genauen Namen und Tag eines Images unsicher sind, können Sie stattdessen seine Image-ID verwenden. Die Image-ID ist ein eindeutiger Bezeichner für jedes Image in Ihrer Docker-Umgebung.

Finden wir die ID des Ubuntu-Images:

docker images --format "{{.ID}} {{.Repository}}:{{.Tag}}" | grep ubuntu

Dieser Befehl listet Image-IDs zusammen mit ihren Namen und Tags auf und filtert dann nach Ubuntu-Images. Die Ausgabe könnte so aussehen:

f8fe765559e5 ubuntu:20.04

Jetzt können Sie das Image mit seiner ID entfernen:

## Ersetzen Sie f8fe765559e5 durch die tatsächliche ID von Ihrem System
docker rmi f8fe765559e5

Methode 3: Die Force-Option verwenden (mit Vorsicht)

In einigen Fällen müssen Sie möglicherweise die Entfernung eines Images erzwingen. Dies sollte mit Vorsicht verwendet werden, da es zu Problemen führen kann, wenn das Image noch in Gebrauch ist.

docker rmi -f alpine:latest

Das Flag -f oder --force erzwingt die Entfernung. Sie sollten eine Ausgabe wie diese sehen:

Untagged: alpine:latest
Untagged: alpine@sha256:1a6d376bf70c0941e5a1bcf34f4d0b5e2e7ed37e58c3c70eadf39f2c5f2146d7
Deleted: sha256:e66264b98777c5a0ece2decdca479c909c8c01571cd473ce6c1013773f190e6c

Methode 4: Bereinigen mit Prune

Wenn Sie alle ungenutzten Images (nicht nur ein bestimmtes) entfernen möchten, können Sie den Befehl prune verwenden:

docker image prune

Dies entfernt alle hängenden Images (Images ohne Tags und die nicht von Containern verwendet werden). Wenn Sie alle ungenutzten Images entfernen möchten, nicht nur die hängenden:

docker image prune -a

Seien Sie vorsichtig mit diesem Befehl, da er alle Images entfernt, die nicht von Containern verwendet werden.

Versuchen wir, unser verbleibendes Ubuntu-Image korrekt zu entfernen:

docker rmi ubuntu:20.04

Wenn erfolgreich, sollten Sie Folgendes sehen:

Untagged: ubuntu:20.04
Untagged: ubuntu@sha256:db8bf6f4fb351aa7a26e27ba2686cf8eb511a5c19b8c695210842adc8957aa27
Deleted: sha256:f8fe765559e51d3c522e282a2ef234d968fc23030b2bce9d8487466b53974467

Nachdem Sie nun mehrere Methoden zur Behebung des Fehlers 'no such image' gelernt haben, können Sie Ihre Docker-Images effektiv verwalten, ohne auf dieses häufige Problem zu stoßen.

Umgang mit Images, die von Containern verwendet werden

Ein weiteres häufiges Szenario, das zu Problemen beim Entfernen von Images führen kann, ist, wenn das Image von einem Container verwendet wird. Lassen Sie uns untersuchen, wie man mit dieser Situation umgeht.

Erstellen eines Containers aus einem Image

Zuerst ziehen wir ein kleines Image und erstellen einen Container daraus:

docker pull nginx:alpine

Nun lassen Sie uns einen Container mit diesem Image ausführen:

docker run --name test-nginx -d nginx:alpine

Das Flag -d führt den Container im Detached-Modus (im Hintergrund) aus. Sie sollten eine Container-ID in der Ausgabe sehen.

Überprüfen des laufenden Containers

Überprüfen Sie, ob der Container läuft:

docker ps

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
a1b2c3d4e5f6   nginx:alpine   "/docker-entrypoint.…"   10 seconds ago   Up 9 seconds    80/tcp    test-nginx

Versuchen, das Image zu entfernen

Versuchen wir nun, das Image zu entfernen, das von unserem laufenden Container verwendet wird:

docker rmi nginx:alpine

Sie erhalten eine Fehlermeldung wie:

Error response from daemon: conflict: unable to remove repository reference "nginx:alpine" (must force) - container a1b2c3d4e5f6 is using its referenced image b46db85084b8

Dieser Fehler tritt auf, weil Docker verhindert, dass Sie Images entfernen, die von Containern verwendet werden.

Auflösen von Image-in-Use-Konflikten

Um dies zu beheben, haben Sie zwei Optionen:

Option 1: Zuerst den Container stoppen und entfernen

## Den Container stoppen
docker stop test-nginx

## Den Container entfernen
docker rm test-nginx

## Jetzt das Image entfernen
docker rmi nginx:alpine

Option 2: Das Image zwangsweise entfernen (nicht empfohlen)

docker rmi -f nginx:alpine

Die Verwendung der Force-Option kann Probleme mit laufenden Containern verursachen, daher ist es im Allgemeinen besser, zuerst Container zu stoppen und zu entfernen.

Ein vollständiges Bereinigungsbeispiel

Führen wir eine vollständige Bereinigung unserer Testumgebung durch:

## Alle Container auflisten (einschließlich der gestoppten)
docker ps -a

## Alle laufenden Container stoppen
docker stop $(docker ps -q)

## Alle Container entfernen
docker rm $(docker ps -a -q)

## Jetzt sicher alle Images entfernen
docker rmi $(docker images -q)

Nachdem Sie diese Befehle ausgeführt haben, sollte Ihre Docker-Umgebung sauber sein. Sie können dies mit folgendem Befehl überprüfen:

docker images

Dies sollte keine Images anzeigen oder Folgendes ausgeben:

REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

Indem Sie verstehen, wie man mit Images umgeht, die von Containern verwendet werden, können Sie eine weitere häufige Ursache für Probleme bei der Docker-Image-Verwaltung vermeiden und beheben.

Zusammenfassung

In diesem Lab haben Sie praktische Erfahrungen mit der Docker-Image-Verwaltung gesammelt und gelernt, wie man den häufigen Fehler 'no such image' behebt. Sie verstehen jetzt:

  • Wie man mit Docker-Images arbeitet, einschließlich des Pullens, Auflistens und Inspizierens
  • Verschiedene Szenarien, die den Fehler 'no such image' auslösen können
  • Mehrere Methoden zur Behebung des Fehlers, einschließlich der Überprüfung verfügbarer Images, der Verwendung von Image-IDs und der erzwungenen Entfernung, wenn dies erforderlich ist
  • Wie man mit dem Sonderfall von Images umgeht, die von Containern verwendet werden

Diese Fähigkeiten helfen Ihnen, Ihre Docker-Umgebung effektiver zu verwalten und häufige Probleme zu beheben. Denken Sie bei der weiteren Arbeit mit Docker daran, dass eine ordnungsgemäße Image-Verwaltung für die Aufrechterhaltung eines effizienten containerisierten Workflows unerlässlich ist.