Differenza tra registro Docker e repository


147

Sono confuso sulla differenza tra registri docker e repository. Sembra che la documentazione Docker utilizzi le due parole in modo intercambiabile. Inoltre, i repository a volte vengono indicati come immagini, come questa dai loro documenti:

Per inviare un repository al suo registro, è necessario aver denominato un'immagine o aver eseguito il commit del contenitore in un'immagine denominata, come abbiamo visto qui.

Ora puoi inviare questo repository al registro designato dal suo nome o tag.

Come si può spingere un repository in un registro? Non stai spingendo l'immagine nel repository?


4
che dire delle immagini docker rispetto ai repository docker?
Charlie Parker,

per le immagini vs repository: stackoverflow.com/questions/31115098/...
wisbucky

1
se sai git, allora - Docker Registry (il valore predefinito è hub.docker.com) => GitHub ( github.com); - Docker Repository => Git Repository; - Tag Docker => Git Ref (Branch / Tag)
go2null

Per mappare meglio Docker su Git: • Registro Docker = Git Server • Deposito Docker = Deposito Git • Tag Docker = Tag Git (più o meno)
Simon Woodside

Risposte:


171

Il registro Docker è un servizio che archivia le immagini della finestra mobile.

Il registro Docker potrebbe essere ospitato da una terza parte, come registro pubblico o privato, come uno dei seguenti registri:

oppure puoi ospitare il registro docker da solo
(vedi https://docs.docker.com/ee/dtr/ per maggiori dettagli).

Il repository Docker è una raccolta di immagini docker diverse con lo stesso nome, con tag diversi.Il tag è un identificatore alfanumerico dell'immagine all'interno di un repository.

Ad esempio, consultare https://hub.docker.com/r/library/python/tags/ . Esistono molti tag diversi per l'immagine python ufficiale, questi tag sono tutti membri del repository python ufficiale sull'hub Docker. Docker Hub è un registro Docker ospitato da Docker.

Per saperne di più leggi:


11
Artifactory è uno da aggiungere all'elenco;) Lo usiamo
buildmaestro il

2
E questo è il link per Artifactory - jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
qual è la differenza tra repository e immagini nella finestra mobile?
Charlie Parker,

1
Il repository può memorizzare più immagini diverse contrassegnate da tag.
Nemanja Trifunovic,

2
Perché ha senso avere una sola immagine con più tag?
Charlie Parker,

64

Dal libro Using Docker, Sviluppo e distribuzione di software con contenitori

Registri, repository, immagini e tag

Esiste un sistema gerarchico per la memorizzazione di immagini. Viene utilizzata la seguente terminologia:

Registro

Un servizio responsabile per l'hosting e la distribuzione di immagini. Il registro predefinito è Docker Hub.

deposito

Una raccolta di immagini correlate (di solito che forniscono versioni diverse della stessa applicazione o servizio).

Etichetta

Un identificatore alfanumerico allegato alle immagini all'interno di un repository (ad es. 14.04 o stabile).

Quindi il comando docker pull amouat/revealjs:latestscaricherà l'immagine taggata più recente all'interno del amouat/revealjsrepository dal registro Docker Hub.


1
quindi si possono avere più tag per una singola immagine?
Charlie Parker,

1
@charlie Sì. Ad esempio, in questo momento ubuntu:lateste ubuntu:16.04hanno lo stesso Image ID, il che significa che sono solo più tag per la stessa immagine.
Wisbucky,

Il punto in cui si rompe si trova nella documentazione docker pull, che recita in parte: "Per scaricare una particolare immagine o un insieme di immagini (ad esempio un repository), utilizzare docker pull. Se non viene fornito alcun tag, Docker Engine utilizza il :latesttag come predefinito. " Come si potrebbe quindi "scaricare un ... set di immagini (ovvero un repository)"? 🤔
Laird Nelson,

1
informazioni casuali: l'URL del registro predefinito è docker.io
yosefrow

1
Visualizzo questo come un albero con il registro come radice che ha diversi repository secondari e ognuno di questi repository ha immagini: tag come suoi figli. Ognuno di questi livelli ha un ruolo particolare: un registro è come una posizione di hosting e un repository è una directory di immagini. La mia comprensione è corretta?
Ultrablendz,

12

Completando le informazioni:

  • Di solito si spinge un repository in un registro (e tutte le immagini che ne fanno parte). Ma puoi trasferire una singola immagine in un registro. In tutti i casi, usi docker push.
  • Un'immagine ha un ID immagine di 12 cifre esadecimali, ma è anche identificata da: namespace/repo-name:tag
  • Il nome completo dell'immagine può essere facoltativamente preceduto dal nome host e dalla porta del registro: myregistryhost:5000/namespace/repo-name:tag
  • Una convenzione di denominazione comune consiste nell'utilizzare il nome utente del registro come quello che ho chiamato "spazio dei nomi".

3
Capisco quello che stai dicendo, ma tecnicamente non esiste image-name. Il formato dovrebbe essere user-name/repo-name:tag, secondo la documentazione Docker . (Vorrei che Docker avesse usato una terminologia migliore, è piuttosto confusa e non sono nemmeno coerenti in ogni momento).
Wisbucky,

@wisbucky Grazie! Ho aggiornato la mia risposta. In effetti la documentazione non era così buona quando ho risposto a questa domanda un anno fa. Ad esempio, allora ho creato un problema sul repository github della finestra mobile perché il glossario della finestra mobile non conteneva "layer" e "namespace" (!)
Paulo Merson,

1
E come fa docker a elaborare l'indirizzo IP di un registro pubblico quando si inserisce qualcosa come nimmis / docker-alpine-java: latest
Adam

1
Oooops -docker info |grep Registry
Adam,

2

Un repository docker è una combinazione carina di registrye image.

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

equivale a

docker tag foo <repository>:<tag>

0

Docker Registry è un servizio che puoi ospitare tu stesso (Trusted e Private) oppure puoi lasciare che l'hub docker sia l'host per questo servizio. Di solito, se il tuo software è commerciale, lo avrai ospitato come un registro "privato e attendibile". Per gli sviluppatori Java, questo è in qualche modo analogo all'installazione di Maven Artifactory.

Docker Repository è un insieme di immagini "Taggate". Un esempio è che potresti aver taggato 5 ubuntu:latestimmagini:

a) Nano editor (image1_tag: v1)

b) Un software specifico 1 (image1_tag: v2)

c) Sudo (image1_tag: v3)

d) demone http di apache (image1_tag: v4)

e) tomcat (image1_tag: v5)

È possibile utilizzare il docker pushcomando per inviare ciascuna delle immagini sopra al repository. Finché i nomi del repository corrispondono, verranno spinti correttamente e appariranno nel repository scelto e correttamente taggati.

Ora, la tua domanda è "Allora, dove è ospitato questo repository / chi gestisce il servizio"? È qui che entra in scena il registro Docker. Per impostazione predefinita, otterrai un registro hub docker (Open Source) che puoi utilizzare per conservare il tuo repository privato / pubblico. Quindi, senza alcuna modifica, le tue immagini verranno trasferite nel tuo repository privato nell'hub docker. Un esempio di output quando si spingono i tag immagine sono i seguenti:

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:/$

E se si digita immediatamente, docker images --digests -aè possibile confermare che i tag delle immagini inviate mostrano ora una nuova firma rispetto al repository privato gestito dal registro dell'hub docker.


"Comando push docker per inviare ciascuna delle immagini sopra al repository" - non si spinge le immagini nei repository, ma nei repository nei registri. O mi sbaglio?
The Impaler,

0

Docker Hub e altri servizi di hosting di repository di terze parti sono chiamati "registri". Un registro memorizza una raccolta di repository.

Poiché un registro può avere molti repository e un repository può avere molte versioni diverse della stessa immagine che sono personalizzate con tag.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.