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.