Unterschied zwischen Docker-Registrierung und Repository


146

Ich bin verwirrt über den Unterschied zwischen Docker-Registern und Repositories. In der Docker-Dokumentation werden die beiden Wörter anscheinend synonym verwendet. Außerdem werden Repositorys manchmal als Bilder bezeichnet, wie z. B. in ihren Dokumenten:

Um ein Repository in seine Registrierung zu verschieben, müssen Sie ein Image benannt oder Ihren Container einem benannten Image zugewiesen haben, wie wir hier gesehen haben.

Jetzt können Sie dieses Repository in die Registrierung verschieben, die durch den Namen oder das Tag gekennzeichnet ist.

Wie können Sie ein Repository in eine Registrierung verschieben? Verschieben Sie das Bild nicht in das Repository?


4
Was ist mit Docker-Bildern im Vergleich zu Docker-Repositories?
Charlie Parker

für Bilder gegen Repositories: stackoverflow.com/questions/31115098/…
wisbucky

1
Wenn Sie wissen git, dann - Docker Registry (Standard ist hub.docker.com) => GitHub ( github.com); - Docker Repository => Git Repository; - Docker Tag => Git Ref (Zweig / Tag)
go2null

Um Docker besser Git zuzuordnen: • Docker-Registrierung = Git-Server • Docker-Repository = Git-Repository • Docker-Tag = Git-Tag (mehr oder weniger)
Simon Woodside

Antworten:


169

Die Docker-Registrierung ist ein Dienst, der Ihre Docker-Images speichert.

Die Docker-Registrierung kann von einem Dritten als öffentliche oder private Registrierung gehostet werden, z. B. eine der folgenden Registrierungen:

oder Sie können die Docker-Registrierung selbst hosten
( weitere Informationen finden Sie unter https://docs.docker.com/ee/dtr/ ).

Das Docker-Repository ist eine Sammlung verschiedener Docker-Images mit demselben Namen und unterschiedlichen Tags. Tag ist eine alphanumerische Kennung des Bildes in einem Repository.

Siehe beispielsweise https://hub.docker.com/r/library/python/tags/ . Es gibt viele verschiedene Tags für das offizielle Python-Image. Diese Tags sind alle Mitglieder des offiziellen Python-Repositorys im Docker Hub. Docker Hub ist eine Docker-Registrierung, die von Docker gehostet wird.

Um mehr zu erfahren, lesen Sie:


11
Artifactory ist eine, die der Liste
hinzugefügt werden soll

2
Und das ist der Link für Artifactory - jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
Was ist der Unterschied zwischen Repository und Bildern im Docker?
Charlie Parker

1
Das Repository kann mehrere verschiedene Bilder speichern, die durch Tags gekennzeichnet sind.
Nemanja Trifunovic

2
Warum ist es sinnvoll, ein einzelnes Bild mit mehreren Tags zu versehen?
Charlie Parker

64

Aus dem Buch Verwenden von Docker, Entwickeln und Bereitstellen von Software mit Containern

Registries, Repositories, Bilder und Tags

Es gibt ein hierarchisches System zum Speichern von Bildern. Die folgende Terminologie wird verwendet:

Registrierung

Ein Dienst, der für das Hosten und Verteilen von Bildern verantwortlich ist. Die Standardregistrierung ist der Docker Hub.

Repository

Eine Sammlung verwandter Bilder (die normalerweise verschiedene Versionen derselben Anwendung oder desselben Dienstes bereitstellen).

Etikett

Eine alphanumerische Kennung, die an Bilder in einem Repository angehängt ist (z. B. 14.04 oder Stable).

Der Befehl docker pull amouat/revealjs:latestlädt also das zuletzt im amouat/revealjsRepository getaggte Image aus der Docker Hub-Registrierung herunter .


1
Kann man also mehrere Tags für ein einzelnes Bild haben?
Charlie Parker

1
@ Charlie Ja. Zum Beispiel jetzt ubuntu:latestund ubuntu:16.04haben das gleiche Image ID, was bedeutet, dass sie nur mehrere Tags für das gleiche Bild sind.
wisbucky

Wo dies zusammenbricht, steht in der Dokumentation für docker pull, die teilweise lautet: "Um ein bestimmtes Bild oder eine Reihe von Bildern (dh ein Repository) herunterzuladen, verwenden Sie docker pull. Wenn kein Tag angegeben ist, verwendet Docker Engine das :latestTag als Standard. "" Wie würde man dann "einen ... Satz von Bildern (dh ein Repository) herunterladen"? 🤔
Laird Nelson

1
Zufällige Informationen: Die Standard-Registrierungs-URL lautet docker.io
yosefrow

1
Ich stelle mir das wie einen Baum vor, bei dem die Registrierung die Wurzel ist, die mehrere untergeordnete Repositorys hat, und jedes dieser Repositorys hat images: tag als untergeordnete. Jede dieser Ebenen hat eine bestimmte Rolle - eine Registrierung ist wie ein Hosting-Speicherort und ein Repository ist ein Verzeichnis von Bildern. Ist mein Verständnis richtig?
Ultrablendz

12

Ergänzung der Informationen:

  • Normalerweise verschieben Sie ein Repository in eine Registrierung (und alle Bilder, die Teil davon sind). Sie können jedoch ein einzelnes Bild in eine Registrierung verschieben. In allen Fällen verwenden Sie docker push.
  • Ein Bild hat eine 12-hexadezimale Bild-ID, ist aber auch gekennzeichnet durch: namespace/repo-name:tag
  • Dem vollständigen Bildnamen kann optional der Hostname und der Port der Registrierung vorangestellt werden: myregistryhost:5000/namespace/repo-name:tag
  • Eine übliche Namenskonvention besteht darin, Ihren Registrierungsbenutzernamen als "Namespace" zu verwenden.

3
Ich verstehe, was Sie sagen, aber technisch gibt es so etwas wie nicht image-name. Das Format sollte user-name/repo-name:taggemäß der Docker-Dokumentation sein . (Ich wünschte, Docker hätte eine bessere Terminologie verwendet, das ist ziemlich verwirrend und sie sind nicht immer konsistent).
wisbucky

@ wisbucky Danke! Ich habe meine Antwort aktualisiert. In der Tat war die Dokumentation nicht so gut, als ich diese Frage vor einem Jahr beantwortete. Zum Beispiel habe ich damals ein Problem mit dem Docker-Github-Repo erstellt, weil das Docker-Glossar keine "Ebene" und keinen "Namespace" (!) Enthielt
Paulo Merson

1
Und wie berechnet Docker die IP-Adresse einer öffentlichen Registrierung, wenn Sie einfach so etwas wie nimmis / docker-alpine-java eingeben: spätestens
Adam

1
Oooops -docker info |grep Registry
Adam

2

Ein Docker-Repository ist eine nette Kombination aus registryund image.

docker tag foo <registry>/<image>:<tag>

ist das gleiche wie

docker tag foo <repository>:<tag>

0

Docker Registry ist ein Dienst, den Sie entweder selbst hosten können (vertrauenswürdig und privat) oder Docker Hub als Host für diesen Dienst festlegen können. Wenn Ihre Software kommerziell ist, haben Sie diese normalerweise als "Private and Trusted" -Registrierung gehostet. Für Java-Entwickler ist dies etwas analog zum Setup von Maven Artifactory.

Docker Repository ist eine Reihe von "Tagged" -Bildern. Ein Beispiel ist, dass Sie möglicherweise 5 ubuntu:latestBilder markiert haben :

a) Nano-Editor (image1_tag: v1)

b) Eine bestimmte Software 1 (image1_tag: v2)

c) Sudo (image1_tag: v3)

d) Apache-http-Daemon (image1_tag: v4)

e) Kater (image1_tag: v5)

Mit dem docker pushBefehl können Sie jedes der oben genannten Bilder in Ihr Repository übertragen. Solange die Repository-Namen übereinstimmen, werden sie erfolgreich übertragen und unter dem von Ihnen ausgewählten Repository angezeigt und korrekt markiert.

Ihre Frage lautet nun: "Wo wird dieses Repository gehostet / wer verwaltet den Dienst?" Hier kommt die Docker-Registrierung ins Spiel. Standardmäßig erhalten Sie eine Docker-Hub-Registrierung (Open Source), mit der Sie Ihr privates / öffentliches Repository verwalten können. Ohne Änderungen werden Ihre Bilder in Ihr privates Repository im Docker-Hub verschoben. Eine Beispielausgabe beim Verschieben Ihrer Bild-Tags lautet wie folgt:

docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
bf41e934d39d: Pushed
70d93396f87f: Pushed
6ec525dfd060: Pushed
705419d10b13: Pushed
a4aaef726d02: Pushed
04964fddc946: Pushed
latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
docker@my-docker-vm:/$

Wenn Sie sofort docker images --digests -aeingeben, können Sie bestätigen, dass Ihre Push-Image-Tags jetzt eine neue Signatur für das private Repository anzeigen, das von der Docker-Hub-Registrierung verwaltet wird.


"Docker-Push-Befehl zum Verschieben jedes der oben genannten Bilder in Ihr Repository" - Sie übertragen keine Bilder in Repositorys, sondern Repositorys in Registries. Oder liege ich falsch?
Der Impaler

0

Docker Hub und andere Repository-Hosting-Dienste von Drittanbietern werden als "Registries" bezeichnet. Eine Registrierung speichert eine Sammlung von Repositorys.

Da eine Registrierung viele Repositorys haben kann und ein Repository viele verschiedene Versionen desselben Images haben kann, die einzeln mit Tags versioniert sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.