2015-05-04 9 views
5

Przeczytałem wiele tutoriali na temat konfigurowania i używania mojego prywatnego rejestru dokerów.Dlaczego znacznik wydaje się być ściśle powiązany z nazwą hosta rejestru?

Jedna rzecz, która mnie zaskoczyła to fakt, że znacznik, z którym oznaczam obraz, wydaje się być ściśle powiązany z nazwą hosta rejestru.

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

Wydaje się to bardzo sprzeczne z intuicją. Co się stanie, jeśli rejestr będzie musiał przejść na inną nazwę hosta? Lub jeśli używam różnych nazw hostów bez względu na to, czy uzyskuję dostęp do serwera wewnętrznie/zewnętrznie?

Co wydaje się bardziej intuicyjne dla mnie byłoby określić rejestr podczas pchania/ciągnięcia:

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

Jakie jest uzasadnienie dla tego? Jakie kluczowe informacje brakuje mi?

Odpowiedz

3

Adres URL/rejestr to zasadniczo "przestrzeń nazw" obrazu. Jeśli nie określisz rejestru, zakłada się, że obraz należy do Docker Hub. W efekcie oznacza to, że Docker Inc kontroluje globalną przestrzeń nazw.

Jeśli nie zostało to zrobione w ten sposób, można mieć dwa zupełnie różne "pchane" obrazy na osobnych hostach o tej samej nazwie, czego Docker chce uniknąć.

Przenoszenie serwera rejestru jest ważnym problemem, więc sugeruję, aby spróbować użyć nazwy domeny zamiast adresu IP w rejestrze.

0

Znacznik, w którym oznaczam obraz, wydaje się być ściśle powiązany z nazwą hosta rejestru.

Niezupełnie: rejestr jest używany w adresie URL serwera rejestru służącego do przesuwania/przeciągania obrazu.

Nawet jeśli zmienisz serwer, nazwa obrazu, którego używałbyś do pchania/ciągnięcia, byłaby wciąż taka sama, zmienia się tylko adres URL (jak wyjaśniono w library/registry i docker/docker-registry).

+0

Nie śledzę - adres URL * jest * częścią nazwy. Jeśli został zmieniony/usunięty, to (prawdopodobnie) odnosi się do innego obrazu. –

+0

@AdrianMouat, część nazwy dotyczy 'docker push', aby wiedzieć, z którym serwerem musi się skontaktować. Druga część nie powinna się zmienić (chociaż ': latest' jest zawsze trochę niebezpieczne i może nie odnosić się do tego samego obrazu z jednego serwera na drugi). Jeśli twój serwer rejestru jest przechowywany w zmiennej środowiskowej, możesz łatwo ponownie użyć tego samego wyrażenia na innym serwerze '$ {nazwa_wirtualu}/myrepo: znacznik'. – VonC

+0

'tag dokowania docku $ {nazwa rejestru}/ubuntu' nie działa. Klient dockera nie dopuszcza tego rodzaju nazewnictwa. – shayy

Powiązane problemy