Ich habe ein Docker-Image mit dem Tag als me/my-image
und ich habe ein privates Repo auf dem Dockerhub mit dem Namen me-private
.
Wenn ich meine me/my-image
drücke, treffe ich immer das öffentliche Repo.
Wie lautet die genaue Syntax, um mein Bild speziell auf mein privates Repo zu übertragen?
docker
docker-registry
Eugene Goldberg
quelle
quelle
Antworten:
Sie müssen Ihr Bild zuerst richtig kennzeichnen mit
registryhost
:Dann Docker Push mit dem gleichen Tag.
Beispiel:
quelle
docker tag 518a41981a6a me-private.com/myPrivateImage && docker push me-private.com/myPrivateImage
docker login
docker tag 518a41981a6a me-private/myPrivateImage
docker push me-private/myPrivateImage
Nur drei einfache Schritte:
docker login --username username
--password
das empfohlene Kennwort weglassen , da es nicht in Ihrem Befehlsverlauf gespeichert wirddocker tag my-image username/my-repo
docker push username/my-repo
quelle
--password
Flagge weg, wenn Ihr Passwort nicht im Verlauf angezeigt werden soll. es wird Sie auffordern.Gehen Sie zuerst zu Ihrem Docker Hub-Konto und machen Sie das Repo. Hier ist ein Screenshot meines Docker Hub-Kontos:
Auf dem Bild können Sie sehen, dass mein Repo "Chuangg" ist.
Gehen Sie nun in das Repo und machen Sie es privat, indem Sie auf den Namen Ihres Bildes klicken. Also habe ich für mich auf "chuangg / gene_commited_image" geklickt und bin dann zu "Einstellungen" -> "Privat machen" gegangen. Dann folgte ich den Anweisungen auf dem Bildschirm
SO LADEN SIE IHR DOCKER-BILD AUF DOCKER HUB hoch
Methode 1 = Schieben Sie Ihr Bild durch die Befehlszeile (cli)
1)
docker commit <container ID> <repo name>/<Name you want to give the image>
Ja, ich denke es muss die Container ID sein. Es kann wahrscheinlich nicht die Bild-ID sein.
Zum Beispiel =
docker commit 99e078826312 chuangg/gene_commited_image
2)
docker run -it chaung/gene_commited_image
3)
docker login --username=<user username> --password=<user password>
Zum Beispiel =
docker login --username=chuangg [email protected]
Ja, Sie müssen sich zuerst anmelden. Abmelden mit "Docker-Abmelden"
4)
docker push chuangg/gene_commited_image
Methode 2 = Verschieben Ihres Bildes mit pom.xml und der Befehlszeile.
Beachten Sie, dass ich ein Maven-Profil namens "Build-Docker" verwendet habe. Wenn Sie kein Profil verwenden möchten, entfernen Sie einfach die
<profiles>, <profile>, and <id>build-docker</id>
Elemente.In der übergeordneten Datei pom.xml:
Docker Terminal Befehl zum Bereitstellen des Docker-Images (aus dem Verzeichnis, in dem sich Ihre pom.xml befindet) =
mvn clean deploy -Pbuild-docker docker:push
Beachten Sie, dass der Unterschied zwischen Methode 2 und 3 darin besteht, dass Methode 3 ein Extra
<execution>
für die Bereitstellung enthält.Methode 3 = Verwenden von Maven zur automatischen Bereitstellung auf Docker Hub
Fügen Sie dieses Zeug Ihrer übergeordneten pom.xml hinzu:
Wechseln Sie in das Verzeichnis C: \ Users \ Gene.docker \ und fügen Sie dieses Ihrer Datei config.json hinzu:
Geben Sie jetzt in Ihrem Docker-Schnellstart-Terminal = ein
mvn clean install -Pbuild-docker
Für diejenigen unter Ihnen, die keine Maven-Profile verwenden, geben Sie einfach ein
mvn clean install
Hier ist der Screenshot der Erfolgsmeldung:
Hier ist meine vollständige pom.xml und ein Screenshot meiner Verzeichnisstruktur:
Hier ist mein Eclipse-Verzeichnis:
Hier ist meine Docker-Datei:
Häufiger Fehler Nr. 1:
Lösung für Fehler Nr. 1 = Synchronisieren Sie die
<execution>
Bereitstellungsphase nicht mit Maven, da Maven dann 2x versucht, das Image bereitzustellen, und einen Zeitstempel auf das JAR setzt. Deshalb habe ich verwendet<phase>install</phase>
.quelle
Wenn Ihre Docker-Registrierung privat ist und selbst gehostet ist , sollten Sie Folgendes tun:
Beispiel:
quelle
Es gibt zwei Möglichkeiten:
Gehen Sie in den Hub, erstellen Sie zuerst das Repository und markieren Sie es als privat. Wenn Sie dann auf dieses Repo klicken, wird es privat sein. Dies ist der gängigste Ansatz.
Melden Sie sich bei Ihrem Docker-Hub-Konto an und wechseln Sie zu Ihren globalen Einstellungen . Es gibt eine Einstellung, mit der Sie festlegen können, wie Ihre Standardsichtbarkeit für die von Ihnen übertragenen Repositorys lautet. Standardmäßig ist es auf öffentlich eingestellt. Wenn Sie es jedoch in privat ändern, werden alle von Ihnen gepussten Repositorys standardmäßig als privat markiert. Es ist wichtig zu beachten, dass Sie über genügend private Repos in Ihrem Konto verfügen müssen. Andernfalls wird das Repo gesperrt, bis Sie Ihren Plan aktualisieren.
quelle
docker push
Befehl zu berühren . Aber wenn ich die Frage richtig verstanden habe, ist keine dieser Antworten richtig und die oben von Ken Cochrane veröffentlichte ist die einzige, die akzeptiert werden sollte.Repository auf Dockerhub erstellen:
$docker tag IMAGE_ID UsernameOnDockerhub/repoNameOnDockerhub:latest
$docker push UsernameOnDockerhub/repoNameOnDockerhub:latest
Hinweis : hier "repoNameOnDockerhub": Repository mit dem Namen, den Sie erwähnen, muss auf Dockerhub vorhanden sein
"Neueste": ist nur ein Tag
quelle
Ref: dock.docker.com
Dieses Thema enthält grundlegende Informationen zum Bereitstellen und Konfigurieren einer Registrierung
Führen Sie eine lokale Registrierung aus
Bevor Sie eine Registrierung bereitstellen können, müssen Sie Docker auf dem Host installieren.
Verwenden Sie einen Befehl wie den folgenden, um den Registrierungscontainer zu starten:
start_registry.sh
Kopieren Sie ein Bild von Docker Hub in Ihre Registrierung
Ziehen Sie das
ubuntu:16.04
Bild vom Docker Hub.Kennzeichnen Sie das Bild als
localhost:5000/my-ubuntu
. Dadurch wird ein zusätzliches Tag für das vorhandene Bild erstellt. Wenn der erste Teil des Tags ein Hostname und ein Port ist, interpretiert Docker dies beim Push als Speicherort einer Registrierung.Übertragen Sie das Image in die lokale Registrierung unter
localhost:5000
:Entfernen Sie die lokal zwischengespeicherten Bilder. Dadurch wird das
localhost:5000/my-ubuntu
Bild nicht aus Ihrer Registrierung entfernt.Ziehen Sie das
localhost:5000/my-ubuntu
Bild aus Ihrer lokalen Registrierung.Laut docs.docker.com ist dies sehr unsicher und wird nicht empfohlen .
Bearbeiten Sie die
daemon.json
Datei, deren Standardspeicherort/etc/docker/daemon.json
unter Linux oderC:\ProgramData\docker\config\daemon.json
Windows Server liegt. Wenn SieDocker for Mac
oder verwendenDocker for Windows
, klicken Sie aufDocker icon -> Preferences -> Daemon
und fügen Sie das hinzuinsecure registry
.Wenn die
daemon.json
Datei nicht vorhanden ist, erstellen Sie sie. Vorausgesetzt, die Datei enthält keine anderen Einstellungen, sollte sie den folgenden Inhalt haben:Wenn unsichere Registrierungen aktiviert sind, führt Docker die folgenden Schritte aus:
Starten Sie Docker neu, damit die Änderungen wirksam werden.
quelle
Melden Sie sich zuerst in Ihrem privaten Repository an.
z.B:
Und dann markieren Sie Ihr Bild für Ihr privates Repository
z.B:
Schieben Sie Ihre Bilder schließlich in Ihr privates Repository
z.B:
Referenz
quelle
Einfache Arbeitslösung:
https://hub.docker.com/
Klicken Sie hier , um ein privates Repository mit Namen zu erstellen.johnsmith/private-repository
Dies ist beispielsweise das Repository, dasNAME/REPOSITORY
Sie beim Erstellen des Images für Ihr Image verwenden.Zuerst,
docker login
Zweitens verwende ich "
docker build -t johnsmith/private-repository:01 .
" (wobei 01 mein Versionsname ist), um ein Bild zu erstellen, und "docker images
", um das erstellte Bild zu bestätigen, wie in diesem gelben Feld unten: (Entschuldigung, ich kann das Tabellenformat nicht einfügen, sondern nur die Textzeichenfolge )docker push johnsmith/private-repository:01
(Ihr privates Repo wird hier sein Beispiel https://hub.docker.com/r/johnsmith/private-repository/ )Erledigt!
quelle