Wie man den docker image push-Befehl verwendet, um Images hochzuladen

DockerDockerBeginner
Jetzt üben

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

Einführung

In diesem Lab erfahren Sie, wie Sie Ihre Docker-Images mit dem Befehl docker image push in eine Registry (Registrierung) hochladen können. Dieser Prozess ist unerlässlich, wenn Sie Ihre benutzerdefinierten Images mit anderen teilen oder in verschiedenen Umgebungen bereitstellen möchten.

Sie beginnen damit, die Änderungen, die Sie in einem laufenden Container vorgenommen haben, zu committen (festzuschreiben), um ein neues Image zu erstellen. Anschließend lernen Sie, wie Sie dieses Image für eine bestimmte Registry angemessen taggen (markieren) müssen, was ein entscheidender Schritt vor dem Pushen ist. Abschließend üben Sie das Pushen des getaggten Images in die Registry, einschließlich des Pushens aller Tags, die einem Image zugeordnet sind.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") docker/ImageOperationsGroup -.-> docker/push("Push Image to Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/run -.-> lab-555160{{"Wie man den docker image push-Befehl verwendet, um Images hochzuladen"}} docker/ps -.-> lab-555160{{"Wie man den docker image push-Befehl verwendet, um Images hochzuladen"}} docker/pull -.-> lab-555160{{"Wie man den docker image push-Befehl verwendet, um Images hochzuladen"}} docker/tag -.-> lab-555160{{"Wie man den docker image push-Befehl verwendet, um Images hochzuladen"}} docker/push -.-> lab-555160{{"Wie man den docker image push-Befehl verwendet, um Images hochzuladen"}} docker/images -.-> lab-555160{{"Wie man den docker image push-Befehl verwendet, um Images hochzuladen"}} end

Einen Container in ein neues Image committen

In diesem Schritt erfahren Sie, wie Sie die Änderungen, die Sie in einem laufenden Container vorgenommen haben, in ein neues Docker-Image committen (festschreiben) können. Dies ist nützlich, wenn Sie den Zustand eines Containers nach Modifikationen wie der Installation von Software oder der Konfiguration von Dateien sichern möchten.

Zunächst starten wir einen einfachen Ubuntu-Container. Wir verwenden das ubuntu-Image. Da wir Änderungen innerhalb des Containers vornehmen werden, müssen wir ihn interaktiv mit einer pseudo-TTY starten.

docker run -it ubuntu

Sie sollten nun in der Shell des Ubuntu-Containers sein. Machen wir eine einfache Änderung, wie die Installation des curl-Pakets.

apt-get update
apt-get install -y curl

Nachdem die Installation abgeschlossen ist, verlassen Sie die Shell des Containers, indem Sie exit eingeben.

exit

Nachdem Sie den Container verlassen haben, sind die von Ihnen vorgenommenen Änderungen (die Installation von curl) immer noch in dieser bestimmten Container-Instanz vorhanden. Um diese Änderungen als neues Image zu sichern, müssen Sie den Container committen.

Zunächst finden Sie die Container-ID des Containers, den Sie gerade verlassen haben. Sie können den Befehl docker ps -a verwenden, um alle Container aufzulisten, einschließlich derjenigen, die beendet wurden.

docker ps -a

Suchen Sie nach dem Container, der aus dem ubuntu-Image erstellt wurde, und notieren Sie seine CONTAINER ID.

Verwenden Sie nun den Befehl docker commit, um aus diesem Container ein neues Image zu erstellen. Die grundlegende Syntax lautet docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]. Wir werden den Container committen und dem neuen Image einen Namen und ein Tag geben. Ersetzen Sie <CONTAINER_ID> durch die tatsächliche ID, die Sie gefunden haben.

docker commit < CONTAINER_ID > my-ubuntu-with-curl:v1

Dieser Befehl erstellt ein neues Image namens my-ubuntu-with-curl mit dem Tag v1. Sie können überprüfen, ob das neue Image erstellt wurde, indem Sie Ihre lokalen Images auflisten.

docker images

Sie sollten my-ubuntu-with-curl in der Liste der Images sehen. Dieses neue Image enthält nun das curl-Paket, das Sie im Container installiert haben.

Das Image für eine bestimmte Registry taggen

In diesem Schritt erfahren Sie, wie Sie ein Docker-Image taggen (markieren) können, damit es in eine bestimmte Container-Registry (Registrierung) gepusht werden kann. Wenn Sie ein Image in eine Registry pushen, wird das Tag verwendet, um das Image innerhalb dieser Registry zu identifizieren. Das Standardformat für das Taggen eines Images für eine Registry lautet [registry-hostname[:port]]/repository[:tag].

Im vorherigen Schritt haben Sie ein Image namens my-ubuntu-with-curl mit dem Tag v1 erstellt. Jetzt taggen wir dieses Image für eine hypothetische Registry. Zu Demonstrationszwecken verwenden wir localhost:5000 als Registry-Adresse.

Sie können den Befehl docker tag verwenden, um ein neues Tag für ein vorhandenes Image zu erstellen. Die grundlegende Syntax lautet docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG].

Taggen wir das my-ubuntu-with-curl:v1-Image für unsere hypothetische Registry.

docker tag my-ubuntu-with-curl:v1 localhost:5000/my-ubuntu-with-curl:v1

Dieser Befehl erstellt ein neues Tag localhost:5000/my-ubuntu-with-curl:v1, das auf dasselbe Image wie my-ubuntu-with-curl:v1 verweist.

Sie können überprüfen, ob das neue Tag hinzugefügt wurde, indem Sie erneut Ihre lokalen Images auflisten.

docker images

Sie sollten jetzt einen Eintrag für localhost:5000/my-ubuntu-with-curl mit dem Tag v1 sehen. Dies zeigt an, dass das Image jetzt getaggt ist und bereit ist, in die Registry unter localhost:5000 gepusht zu werden.

Das getaggte Image in die Registry pushen

In diesem Schritt erfahren Sie, wie Sie ein getaggtes Docker-Image in eine Container-Registry pushen können. Durch das Pushen eines Images wird es anderen Benutzern zum Herunterladen (pullen) und Verwenden zur Verfügung gestellt.

Bevor Sie ein Image in eine lokale Registry pushen können, müssen Sie eine laufende Registry haben. In diesem Lab starten wir einen temporären lokalen Registry-Container.

Zunächst laden Sie das registry-Image herunter.

docker pull registry:2

Jetzt starten Sie den Registry-Container. Wir leiten Port 5000 auf dem Host auf Port 5000 im Container weiter.

docker run -d -p 5000:5000 --name local-registry registry:2

Dieser Befehl startet einen detached (im Hintergrund laufenden) Container namens local-registry, der die Docker-Registry ausführt.

Im vorherigen Schritt haben Sie das Image my-ubuntu-with-curl:v1 mit localhost:5000/my-ubuntu-with-curl:v1 getaggt. Dieses Tag enthält die Adresse unserer lokalen Registry (localhost:5000).

Jetzt können Sie dieses getaggte Image in die lokale Registry pushen, indem Sie den Befehl docker push verwenden. Die Syntax lautet docker push NAME[:TAG].

docker push localhost:5000/my-ubuntu-with-curl:v1

Sie sollten eine Ausgabe sehen, die den Fortschritt des Push-Vorgangs anzeigt, einschließlich der gepushten Layer (Ebenen).

Nachdem der Push-Vorgang abgeschlossen ist, ist das Image my-ubuntu-with-curl:v1 jetzt in Ihrer lokalen Registry unter localhost:5000 gespeichert.

Alle Tags eines Images pushen

In diesem Schritt erfahren Sie, wie Sie alle Tags, die einem bestimmten Image zugeordnet sind, in eine Container-Registry pushen können. Manchmal haben Sie möglicherweise mehrere Tags, die auf dasselbe Image verweisen (z. B. latest, v1.0, stable). Sie können alle diese Tags mit einem einzigen Befehl pushen.

In den vorherigen Schritten haben Sie ein Image my-ubuntu-with-curl erstellt und es als v1 und localhost:5000/my-ubuntu-with-curl:v1 getaggt. Fügen wir diesem Image ein weiteres Tag hinzu. Wir werden es für unsere lokale Registry als latest taggen.

Verwenden Sie erneut den Befehl docker tag, um das latest-Tag hinzuzufügen.

docker tag my-ubuntu-with-curl:v1 localhost:5000/my-ubuntu-with-curl:latest

Jetzt listen Sie Ihre Images auf, um das neue Tag zu sehen.

docker images

Sie sollten jetzt localhost:5000/my-ubuntu-with-curl mit den Tags v1 und latest sehen, die beide auf dieselbe Image-ID verweisen.

Um alle Tags dieses Images in die lokale Registry zu pushen, können Sie den Befehl docker push mit dem Repository-Namen ohne Angabe eines Tags verwenden.

docker push localhost:5000/my-ubuntu-with-curl

Docker wird alle Tags identifizieren, die dem localhost:5000/my-ubuntu-with-curl-Repository zugeordnet sind, und jedes einzelne in die Registry pushen. Sie werden eine Ausgabe sehen, die den Push-Fortschritt für die Tags v1 und latest anzeigt.

Nachdem der Push-Vorgang abgeschlossen ist, sind beide Versionen Ihres Images (v1 und latest) in Ihrer lokalen Registry verfügbar.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie die Änderungen, die in einem laufenden Docker-Container vorgenommen wurden, in ein neues Image übernehmen können. Dieser Prozess umfasst das Starten eines Containers, das Vornehmen von Änderungen darin (z. B. das Installieren von Software), das Beenden des Containers, das Identifizieren der Container-ID und dann das Verwenden des Befehls docker commit, um ein neues Image basierend auf dem Zustand des Containers zu erstellen. Sie haben auch gelernt, wie Sie dem neu erstellten Image einen Namen und ein Tag zuweisen und seine Existenz mit docker images überprüfen können.