Docker-Pull-Image und Tag-Vorgang Pull | Tag

Docker-Pull-Image und Tag-Vorgang Pull | Tag

Ich habe den Quellcode des Fabric-Projekts noch einmal gelesen und festgestellt, dass es viele Dinge gibt, die ich am Docker-Teil nicht ganz verstehe. Beim Lesen sah ich, wie Docker Pull zum Abrufen des Fabric-Images und Docker Tag zum Umbenennen des Images verwendet wurden. Nach kurzem Nachdenken stellte ich fest, dass ich es zwar schon einmal verwendet hatte, es aber nicht sehr gut verstand und mich einfach durchgewurstelt hatte. Jetzt habe ich vergessen, wie man es verwendet ...

1. Docker-Pull

Ziehen Sie das Image aus der Imagequelle, im Allgemeinen vom Docker Hub.

Docker Pull [OPTIONEN] NAME [:TAG|@DIGEST]

Optionen, Abkürzung Standard beschreiben
--all-tags , -a Alle Bilder mit Tag-Namen aus der Bildbibliothek abrufen
--disable-content-trust WAHR Bildüberprüfung ignorieren

Zum Beispiel:

$ Docker Pull Hyperledger/Fabric - $IMAGES:$FABRIC_TAG

Optionen:
# -a Alle Bilder mit unterschiedlichen Tags abrufen -a, --all-tags Alle mit Tags versehenen Bilder im Repository herunterladen
# Bildüberprüfung ignorieren, Standardoption --disable-content-trust Bildüberprüfung überspringen (Standard: true)

Probieren wir es doch mal aus. Als Betriebssystem dient das weit verbreitete Ubuntu 16.04

1.1 Normaler Zug

Tatsächlich können wir die neueste Version des Bildes direkt abrufen. Standardmäßig wird das Bild mit dem Tag „latest“ abgerufen.

Zum Beispiel:

#Ziehen Sie das Java-Image, das Tag ist das aktuellste
$ Docker Pull Java
Standard-Tag verwenden: latest
neueste: Aus Bibliothek/Java ziehen
5040bd298390: Ziehen abgeschlossen 
fce5728aad85: Pull abgeschlossen 
76610ec20bf5: Ziehen abgeschlossen 
60170fec2151: Ziehen abgeschlossen 
e98f73de8f0d: Ziehen abgeschlossen 
11f7af24ed9c: Ziehen abgeschlossen 
49e2d6393f32: Ziehen abgeschlossen 
bb9cdec9c7f3: Ziehen abgeschlossen 
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Neueres Image für Java heruntergeladen:latest

Nachdem der Pull abgeschlossen ist, können wir das Bild anzeigen, das wir bereits haben

$ Docker-Bilder

REPOSITORY TAG BILD ID ERSTELLT GRÖSSE

java latest d23bdf5b1b1b vor 20 Monaten 643MB

1.2 Tag-Namen ziehen

Aus der obigen Ausgabe können wir erkennen, dass, obwohl nur ein Java-Image abgerufen wird, während des Pull-Prozesses mehrere Pull-Abschlüsse auftreten, darunter 5040bd298390 und fce5728aad85. Dies liegt daran, dass ein Image aus mehreren „Ebenen“ bestehen kann und diese „Ebenen“ von anderen Images (ähnlich wie Front-End-Komponenten oder Module) wiederverwendet werden können, um ein neues Image zu erstellen.

Wenn Sie ein anderes Image abrufen, von dem einige bereits heruntergeladen wurden, ruft Docker Pull nur die Metadaten ab, ohne die Ebenen erneut abzurufen.

Die Image-Bibliothek von Docker verwendet inhaltsadressierten Speicher und die Image-ID ist ein SHA256-Digest, der die darin enthaltene Konfiguration und die „Ebenen“ darstellt. Lassen Sie uns das beweisen. Da ich java:latest gezogen habe, ein Image mit dem Tag-Namen latest, muss ich ein Image mit derselben Version wie latest, aber einem anderen Tag-Namen finden (im Wesentlichen dasselbe Image, aber mit einem anderen Tag-Namen). Die folgenden Ergebnisse wurden auf Docker Hub gefunden:

Ziehen Sie das Image mit dem Tag-Namen 8-jdk:

$ docker pull java:8-jdk
8-jdk: Aus Bibliothek/Java ziehen
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Neueres Image für java:8-jdk heruntergeladen

Offensichtlich sieht der Pull hier die „Layer“-Informationen nicht, und der SHA256-Wert der Zusammenfassung ist genau derselbe wie beim Bild mit dem Tag-Namen latest. Im Wesentlichen sind dies zwei genau dieselben Bilder, die aus denselben „Layern“ bestehen, sodass sie nicht erneut abgerufen werden müssen.

An dieser Stelle stellen Sie sich vielleicht die gleiche Frage wie ich: „Genau das Gleiche?“ Bedeutet das, dass es in der Betriebsumgebung nur einen davon gibt? Wessen Tag-Name sollte also verwendet werden? Schauen wir uns die folgende Ausgabe an:

$ Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
java 8-jdk d23bdf5b1b1b vor 20 Monaten 643 MB
java latest d23bdf5b1b1b vor 20 Monaten 643MB

Wir können deutlich erkennen, dass beim Anzeigen aller Bilder Bilder mit den Tag-Namen „8-jdk“ und „latest“ aufgelistet sind. „java:8-jdk“ und „java:latest“ haben dieselbe Bild-ID, da es sich im Wesentlichen um dasselbe Bild handelt, das nur mit unterschiedlichen Tags markiert ist.

Da die Images exakt gleich sind, werden ihre „Ebenen“ nur einmal gespeichert und verbrauchen keinen zusätzlichen Speicherplatz. Das heißt, es gibt in der Betriebsumgebung nur ein Java-Image und das Image kann auch mit unterschiedlichen Tags gekennzeichnet werden.

Weitere Informationen zu Images, „Layern“ und inhaltsadressierten Repositories finden Sie in der neuen, noch nicht geöffneten Grube. Detaillierte Analyse von Docker-Images, „Layern“ und Speichertreibern

1.3 Zusammenfassung Pull

Durch die beiden oben genannten Möglichkeiten zum Abrufen von Bildern erhalten wir einen sha256

sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d

Versuchen wir zusammenzufassen, wie das Bild abgerufen wird:

$ docker pull java@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d: Aus Bibliothek/Java ziehen
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Bild ist aktuell für java@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d

Das Bild dieser Zusammenfassung ist bereits aktuell und muss nicht gezogen werden.

$ Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
java 8-jdk d23bdf5b1b1b vor 20 Monaten 643 MB
java latest d23bdf5b1b1b vor 20 Monaten 643MB

Die Spiegelliste bleibt unverändert.

Hier ist ein Wissenspunkt, der besagt, dass die Zusammenfassung mit FROM in Dockerfile verwendet werden kann:

VON java@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d

MAINTAINER irgendein Betreuer <[email protected]>

Diese Referenzmethode fixiert das Bild aufgrund der spezifischen Zusammenfassung auf eine bestimmte Version und wird nicht aktualisiert. Wenn Sie eine andere Version verwenden müssen, müssen Sie den Inhalt der Zusammenfassung ändern.

1.4 Aus anderen Registern ziehen

Um es noch einmal zu wiederholen: Docker Pull zieht standardmäßig Bilder vom Docker Hub. Natürlich können wir das Abrufen von Bildern aus anderen Registern einrichten:

$ docker pull localregistry.beispiel:6666/testing/test-image

Bitte beachten Sie, dass Sie vor der URL des Registrierungscenters kein http:// oder https:// hinzufügen müssen.

1.5 Mehrere Bilder gleichzeitig aus derselben Bildbibliothek abrufen

Verwenden Sie docker pull -a, um alle Bilder in derselben Bildbibliothek abzurufen.

1.6 Pull abbrechen

Um die Pull-Aktion abzubrechen, können Sie den Pull-Prozess durch Drücken von STRG+C direkt in der Bedienoberfläche beenden.

2. Docker-Tag

Erstellen Sie ein neues Tag für das Quellbild

Docker-Tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Der Image-Name besteht aus den einzelnen Namenskomponenten, die durch einen Schrägstrich getrennt sind, z. B. „library/java“.

Trennen Sie Name und Tag durch einen Doppelpunkt, zum Beispiel „library/java:8-jdk“.

Wir können auch einige Präfixe vor dem Bildnamen hinzufügen, um anzuzeigen, dass die Bildquelle andere Register oder private Register sind, wie zum Beispiel

localregistry.beispiel:6666/bibliothek/java:8-jdk

2.1 Kennzeichnen Sie das mit Name referenzierte Bild

$ Docker-Tag Java java:byname

Leser können versuchen, die Unterschiede und Ähnlichkeiten zwischen Docker-Tag Java java:byname und Docker-Tag Java lib/java:byname zu erkennen.

2.2 Kennzeichnen Sie das Bild mit der ID

$ Docker-Tag d23bdf5b1b1b java:byid

2.3 Kennzeichnen Sie das mit Name und Tag referenzierte Bild

$ Docker-Tag java:8-jdk java:bynameandid

2.4 Bilder in privaten Registern taggen

Um das Bild in ein privates Register hochzuladen, müssen Sie das Bild umbenennen. Die Regeln sind:

$ Docker-Tag java:8-jdk localregistry.Beispiel:6666/Bibliothek/java:8-jdk-v1

Docker pull und Docker tag sind häufig verwendete Befehle. Sie sind einfach zu verwenden, haben aber viele Tricks. Leser können sie selbst üben und ausprobieren.

Nachtrag

Tatsächlich habe ich schon lange mit Docker zu tun. Wie sind Sie auf die Idee gekommen, diesen Teil zu schreiben?

Meine ursprüngliche Absicht beim Schreiben war es, Wissen anzuhäufen. Meine Vorgesetzten haben von mir immer verlangt, dass ich schnell Technologie anwende und Werte schaffe. Daher kenne ich vielleicht nicht die wahre Bedeutung theoretischer Forschung, zugrunde liegender Prinzipien und sogar grundlegender Befehle, aber ich kann sie nur anwenden und weiß, wie man sie anwendet.

Genauso wie eine Fahrschule ihren Schülern zwar das Fahren beibringt (oder auch nicht), ihnen aber nie den Aufbau (die Architektur) und die Funktionsweise (die zugrunde liegenden Prinzipien) des Autos beibringt. Wenn Sie mit Ihren Händen den Gang wechseln und das Lenkrad drehen können und mit Ihren Füßen die Kupplung, das Gaspedal und die Bremse betätigen können, reicht das dann nicht? Sie können Auto fahren.

Warum also Sedimentation?

Erstens: Wenn Sie jemand nach Geboten oder Grundsätzen fragt, zögern Sie und sind nicht in der Lage zu antworten, weil Sie die Anweisungen nur mit der Muskulatur Ihrer Fingerspitzen auswendig gelernt haben, von den Grundsätzen oder zugrunde liegenden Prinzipien ganz zu schweigen.

Zweitens habe ich durch Analogie aus anderen Erfahrungen gelernt. Von einem Front-End-Neuling am Anfang über die Verwendung der Spring Boot-Architektur zum Schreiben von Java-Anwendungen bis hin zum Erlernen der Verwendung von Linux-Befehlen (Shell), Docker und Go zum Anwenden des Blockchain-Frameworks HyperLedger Fabric für die Produktion scheint es ein großer Sprung zu sein, aber es ist immer noch dasselbe Feld, nämlich die Kommunikation zwischen Menschen und Maschinen. Ich habe gelernt, verschiedene Sprachen zu verwenden, um mit Maschinen zu kommunizieren, die verschiedene Maschinensprachen sprechen. Ich war wie ein Ausländer, der in einem Maschinenland lebt und lesen und schreiben kann. Auf dem Weg der Praxis in der Maschinenwelt entferne ich mich allmählich von meiner anfänglichen Aufklärung über HTML, CSS und JavaScript. Es ist der Vorabend des Nationalfeiertags, also werde ich es vorerst hier schreiben. Ich fühle mich wie ein Bohnenspross, der zu viel Wasser aufnimmt und nicht genug Sonnenlicht bekommt. Er wächst immer höher, aber je höher er wächst, desto dünner wird er. Die Wurzeln sind nicht üppig genug, der Hals ist nicht stark genug und es besteht eine größere Wahrscheinlichkeit, dass er sich verbiegt und bricht. Wir sollten uns immer motivieren, an unseren ursprünglichen Zielen festhalten, unsere Pflichten nie vergessen, mehr nährstoffliche Inhalte von vorne aufnehmen und uns stärken.

Der obige Artikel Docker Pull Image und Tag-Operation Pull | Tag ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung, wo das von Docker abgerufene Image gespeichert ist
  • Docker-Konfiguration Alibaba Cloud Image Acceleration Pull-Implementierung
  • Detaillierte Erklärung, wo die von Docker abgerufenen Bilder gespeichert werden
  • Lösung für das Problem der langsamen Docker-Pull-Image-Geschwindigkeit
  • So lösen Sie das Problem der langsamen Docker-Pull-Image-Geschwindigkeit
  • Detaillierte Erklärung, wo die von Docker abgerufenen Bilddateien gespeichert werden
  • Lösen Sie das Problem des Docker-Pull-Image-Fehlers

<<:  js implementiert das Ein- und Ausblenden von Inhalten mit der Maus über die Karte

>>:  HTML-Auszeichnungssprache - Formular

Artikel empfehlen

Detaillierte Erläuterung des Linux-Textverarbeitungsbefehls sort

sort Den Inhalt einer Textdatei sortieren Verwend...

Vue realisiert den gesamten Prozess der Slider-Drag-Verifizierungsfunktion

Rendern Definieren Sie das Skelett, schreiben Sie...

Optimierung der MySQL 4G-Speicherserverkonfiguration

Da die Anzahl der Besuche auf der Website des Unt...

Linux Dateisystemtyp anzeigen Beispielmethode

So überprüfen Sie den Dateisystemtyp einer Partit...

HTML (CSS-Stilspezifikation) muss lauten

CSS-Stilspezifikationen 1. Klassenauswahl 2. Tag-...

Lernen Sie Node.js von Grund auf

Inhaltsverzeichnis URL-Modul 1.Parse-Methode 2. F...

Detaillierte Erläuterung der Mysql-Funktionsaufrufoptimierung

Inhaltsverzeichnis Funktionsaufrufoptimierung Fun...

So verstehen Sie die JS-Funktion Anti-Shake und Funktionsdrosselung

Inhaltsverzeichnis Überblick 1. Funktion Entprell...

Diskussion über die numerische Begrenzung des OL-Elements im HTML-Dokument

Im Allgemeinen ist es unwahrscheinlich, dass Sie ...