Docker kayıt defteri ile depo arasındaki fark


147

Docker kayıtları ve depolar arasındaki fark konusunda kafam karıştı. Docker belgeleri iki kelimeyi birbirinin yerine kullanıyor gibi görünüyor. Ayrıca, depolara bazen dokümanlarında olduğu gibi görüntüler denir:

Bir depoyu kayıt defterine iletmek için burada gördüğümüz gibi bir resim adlandırmanız veya kapsayıcıyı adlandırılmış bir resme vermeniz gerekir.

Şimdi bu havuzu adıyla veya etiketi ile belirtilen kayıt defterine iletebilirsiniz.

Bir havuzu bir kayıt defterine nasıl aktarabilirsiniz? Görüntüyü havuza göndermiyor musunuz?


4
docker görüntüleri vs docker depoları hakkında ne?
Charlie Parker


1
biliyorsanız git, - Docker Registry (varsayılan değer hub.docker.com) => GitHub ( github.com); - Docker Deposu => Git Deposu; - Docker Etiketi => Git Ref (Şube / Etiket)
go2null

Docker'ı Git'e daha iyi eşlemek için: • Docker Kayıt Defteri = Git Sunucusu • Docker Deposu = Git Deposu • Docker Etiketi = Git Etiketi (daha fazla veya daha az)
Simon Woodside

Yanıtlar:


171

Docker kayıt defteri, docker görüntülerinizi saklayan bir hizmettir.

Docker kayıt defteri, aşağıdaki kayıtlardan biri gibi üçüncü bir kişi tarafından genel veya özel kayıt defteri olarak barındırılabilir:

veya docker kayıt defterini kendiniz de barındırabilirsiniz
( daha fazla bilgi için bkz. https://docs.docker.com/ee/dtr/ ).

Docker deposu, aynı ada sahip, farklı etiketlere sahip farklı docker görüntülerinin bir koleksiyonudur. Etiket, bir depodaki görüntünün alfasayısal tanımlayıcısıdır.

Örneğin, bkz. Https://hub.docker.com/r/library/python/tags/ . Resmi python görüntüsü için birçok farklı etiket vardır, bu etiketler Docker Hub'daki resmi python deposunun üyeleridir. Docker Hub, Docker tarafından barındırılan bir Docker Kayıt Defteri'dir.

Daha fazla bilgi edinmek için:


11
Artefakt listeye eklemek için biridir;) Bunu kullanıyoruz
buildmaestro

2
Ve bu Artifactory için bağlantı - jfrog.com/confluence/display/RTF/Docker+Registry
JBaruch

1
depodaki depo ve görüntüler arasındaki fark nedir?
Charlie Parker

1
Havuz, etiketlerle işaretlenmiş birden fazla farklı görüntü saklayabilir.
Nemanja Trifunovic

2
Tek bir görüntünün birden fazla etiketi olması neden anlamlıdır?
Charlie Parker

64

Docker'ı Kullanma, Kapsayıcılarla Yazılım Geliştirme ve Dağıtma kitabından

Kayıtlar, Depolar, Resimler ve Etiketler

Görüntüleri saklamak için hiyerarşik bir sistem vardır. Aşağıdaki terminoloji kullanılır:

Kayıt

Görüntüleri barındırmak ve dağıtmaktan sorumlu bir hizmet. Varsayılan kayıt defteri Docker Hub'dır.

depo

İlgili görüntülerden oluşan bir koleksiyon (genellikle aynı uygulamanın veya hizmetin farklı sürümlerini sağlar).

Etiket

Bir havuzdaki görüntülere eklenmiş alfasayısal tanımlayıcı (ör. 14.04 veya kararlı).

Böylece komut docker pull amouat/revealjs:latest, amouat/revealjsdepodaki en son etiketlenen görüntüyü Docker Hub kayıt defterinden indirir .


1
yani tek bir resim için birden fazla etiket olabilir mi?
Charlie Parker

1
@charlie Evet. Örneğin, şu anda ubuntu:latestve ubuntu:16.04aynı özelliklere sahip, Image IDyani bunlar aynı resim için yalnızca birden fazla etiket.
wisbucky

Bu docker pullbölümün dokümantasyonda olduğu kısımda şu kısımları okur: "Belirli bir görüntüyü veya görüntü kümesini (yani bir havuzu) indirmek için şunu kullanın docker pull. Hiçbir etiket sağlanmamışsa, Docker Engine :latestetiketi varsayılan olarak kullanır . " Öyleyse, nasıl bir "bir dizi resim indirilir (yani bir depo)"? İrd
Laird Nelson

1
rastgele bilgi: varsayılan kayıt defteri url'si docker.io
yosefrow

1
Bunu birkaç çocuk deposuna sahip olan kayıt defteri kökü olan bir ağaç gibi görüyorum ve bu depoların her birinin görüntüleri var: etiketi çocuk olarak. Bu düzeylerin her birinin belirli bir rolü vardır - bir kayıt defteri bir barındırma konumu gibidir ve bir depo bir resim dizinidir. Anlayışım doğru mu?
Ultrablendz

12

Bilgiyi tamamlama:

  • Genellikle bir kayıt defterini (ve bunun bir parçası olan tüm görüntüleri) bir depoya itersiniz. Ancak tek bir resmi kayıt defterine aktarabilirsiniz. Her durumda, kullanın docker push.
  • Bir görüntünün 12 basamaklı bir Görüntü Kimliği vardır, ancak aynı zamanda aşağıdakilerle tanımlanır: namespace/repo-name:tag
  • Resmin tam adı isteğe bağlı olarak kayıt defteri ana bilgisayar adı ve bağlantı noktası ile ön ek olarak eklenebilir: myregistryhost:5000/namespace/repo-name:tag
  • Yaygın bir adlandırma kuralı, kayıt defteri kullanıcı adınızı "ad alanı" olarak adlandırdığım şekilde kullanmaktır.

3
Ne dediğini anlıyorum, ama teknik olarak böyle bir şey yok image-name. Biçim user-name/repo-name:tag, Docker belgelerine göre olmalıdır . (Keşke Docker daha iyi bir terminoloji kullanmış olsaydı, oldukça kafa karıştırıcıdır ve her zaman tutarlı değildirler).
wisbucky

@wisbucky Teşekkürler! Cevabımı güncelledim. Aslında bu soruyu bir yıl önce cevapladığımda dokümantasyon o kadar iyi değildi. Örneğin, docker sözlüğü "katman" ve "ad alanı" (!) İçermediğinden, o zaman docker github repo ile ilgili bir sorun oluşturdum
Paulo Merson

1
Ve nimmis / docker-alpine-java gibi bir şey koyduğunuzda docker bir genel kayıt defterinin IP adresini nasıl işler: en son
Adam

1
Oooops -docker info |grep Registry
Adam

2

Bir docker deposu şirin bir kombinasyonudur registryve image.

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

aynıdır

docker tag foo <repository>:<tag>

0

Docker Kayıt Defteri, kendinizi (Güvenilen ve Özel) barındırabileceğiniz veya docker hub'ın bu hizmete ev sahipliği yapmasına izin verebileceğiniz bir hizmettir. Genellikle, yazılımınız ticari ise, bunu "Özel ve Güvenilir" kayıt defteri olarak barındırırsınız. Java Geliştiricileri için, bu Maven Yapay Kurulumuna biraz benziyor.

Docker Deposu "Etiketli" görüntüler kümesidir. Bir örnek, 5 ubuntu:latestresmi etiketlemiş olabilirsiniz :

a) Nano düzenleyici (image1_tag: v1)

b) Belirli bir yazılım 1 (image1_tag: v2)

c) Sudo (image1_tag: v3)

d) apache http arka plan programı (image1_tag: v4)

e) tomcat (image1_tag: v5)

docker pushYukarıdaki resimlerin her birini deponuza göndermek için komutu kullanabilirsiniz . Havuz adları eşleştiği sürece, bunlar başarıyla aktarılır ve seçtiğiniz deponun altında görünür ve doğru şekilde etiketlenir.

Şimdi, "Peki bu depo nerede barındırılıyor / hizmeti kim yönetiyor?" Docker Registry bu noktada devreye giriyor. Varsayılan olarak, özel / genel havuzunuzu saklamak için kullanabileceğiniz bir docker hub kayıt defteri (Açık Kaynak) alırsınız. Herhangi bir değişiklik yapılmadan, görüntüleriniz docker hub'ındaki özel havuzunuza aktarılacaktır. Resim etiketlerinizi ittiğinizde örnek çıktı şu şekildedir:

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

Hemen docker images --digests -ayazarsanız, itilen resim etiketlerinizin artık docker hub kayıt defteri tarafından yönetilen özel depoya karşı yeni imza gösterdiğini onaylayabilirsiniz.


"Yukarıdaki görüntülerin her birini deponuza itmek için docker push komutu" - görüntüleri depolara değil, depolara kayıtlara itersiniz. Yoksa yanılıyor muyum?
Impaler

0

Docker Hub ve diğer üçüncü taraf depo barındırma hizmetlerine “kayıt” adı verilir. Bir kayıt defteri, depo koleksiyonunu saklar.

Bir kayıt defterinin birçok havuzu olabilir ve bir havuz, aynı görüntünün etiketlerle ayrı ayrı sürümlendirilen birçok farklı sürümüne sahip olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.