2015-05-04 5 views
5

Ho letto molte esercitazioni su come configurare e utilizzare il mio registro personale di docker.Perché il tag sembra essere strettamente associato al nome host del registro?

Una cosa che mi ha bloccato è il fatto che il tag con cui sto taggando l'immagine, sembra essere strettamente associato al nome host del registro.

docker tag <imageid> registry.mycompany.com:5000/myrepo:tag 
docker push registry.mycompany.com:5000/myrepo:tag 

Questo sembra davvero contro-intuitivo. Cosa succede se il registro deve spostarsi su un nome host diverso? O se sto usando nomi di host diversi indipendentemente dal fatto che sto accedendo o meno al server internamente/esternamente?

Ciò che sembra più intuitivo per me sarebbe quella di specificare il Registro di sistema quando spingere/tirare:

docker tag <imageid> myrepo:tag 
docker push myrepo:tag --registry=registry.mycompany.com 
docker pull myrepo:tag --registry=registry.mycompnay.com 

Qual è la logica per questo? Quale bit di informazione chiave mi manca?

risposta

3

Il nome dell'URL/registro è essenzialmente lo "spazio dei nomi" per l'immagine. Se non si specifica un registro, si presume che l'immagine appartenga all'hub Docker. In effetti, ciò significa che Docker Inc controlla lo spazio dei nomi globale.

Se non fosse stato fatto in questo modo, si potevano avere due immagini "spinte" completamente diverse su host separati con lo stesso nome, che è qualcosa che Docker vuole evitare.

Lo spostamento del server del registro è un problema valido, quindi suggerisco di provare a utilizzare un nome di dominio anziché IP per il registro.

0

il tag con cui sto taggando l'immagine, sembra essere strettamente associato al nome host del registro.

Non esattamente: il registro viene utilizzato nell'URL del server del registro utilizzato per spingere/tirare l'immagine.

Anche se si modifica il server, il nome dell'immagine che si utilizzerà per spingere/tirare sarebbe ancora lo stesso, cambia solo l'url (come spiegato in library/registry e docker/docker-registry).

+0

Non seguo: l'URL * è * parte del nome. Se è cambiato/rimosso, ci si riferisce (probabilmente) a un'immagine diversa. –

+0

@AdrianMouat che parte del nome è per 'docker push' per sapere quale server deve contattare. La seconda parte non dovrebbe cambiare (anche se ': latest' è sempre un po 'pericoloso e potrebbe non riferirsi alla stessa immagine da un server a un altro). Se il tuo server di registro è memorizzato in una variabile di ambiente, puoi facilmente riutilizzare la stessa espressione su un altro server '$ {registryname}/myrepo: tag'. – VonC

+0

'tag docker ubuntu $ {registryname}/ubuntu' non funziona. Il client docker non consente questo tipo di denominazione – shayy

Problemi correlati