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:
- Versuch, ein Image zu entfernen, das nicht existiert
- Verwendung eines falschen Image-Namens oder -Tags
- Tippfehler in der Image-ID oder im Namen
- 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:
- Repository und Tag (z. B.
ubuntu:20.04) - Image-ID (z. B.
f8fe765559e5) - 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.



