Kayıt defterleri, depolar ve yapıtlar hakkında

Bu makalede kapsayıcı kayıt defterleri, depolar, kapsayıcı görüntüleri ve ilgili yapıtlar ile ilgili temel kavramlar açıklanır.

Registry, repositories, and artifacts

Kayıt Defteri

Kapsayıcı kayıt defteri, kapsayıcı görüntülerini ve ilgili yapıtları depolayan ve dağıtan bir hizmettir. Docker Hub, Docker kapsayıcı görüntülerinin genel kataloğu olarak hizmet veren bir genel kapsayıcı kayıt defteri örneğidir. Azure Container Registry, tümleşik kimlik doğrulaması, ağ kapatma dağıtımları için genel dağıtımı ve güvenilirliği destekleyen coğrafi çoğaltma, Özel Bağlantı ile sanal ağ yapılandırması, etiket kilitleme ve diğer birçok gelişmiş özellik ile kullanıcılara kapsayıcı içeriklerinin doğrudan denetimini sağlar.

Docker uyumlu kapsayıcı görüntülerine ek olarak, Azure Container Registry Helm grafikleri ve Open Container Initiative (OCI) görüntü biçimleri de dahil olmak üzere bir dizi içerik yapıtını destekler.

Depo

Depo, kayıt defterindeki aynı ada ancak farklı etiketlere sahip kapsayıcı görüntülerinin veya diğer yapıtların koleksiyonudur. Örneğin, depoda acr-helloworld aşağıdaki üç görüntü bulunur:

  • acr-helloworld:latest
  • acr-helloworld:v1
  • acr-helloworld:v2

Depo adları ad alanlarını da içerebilir. Ad alanları, eğik çizgiyle ayrılmış adları kullanarak kuruluşunuzdaki ilgili depoları ve yapıt sahipliğini belirlemenize olanak sağlar. Ancak, kayıt defteri hiyerarşi olarak değil, tüm depoları bağımsız olarak yönetir. Örneğin:

  • pazarlama/kampanya10-18/web:v2
  • pazarlama/kampanya10-18/api:v3
  • marketing/campaign10-18/email-sender:v2
  • product-returns/web-submission:20180604
  • product-returns/legacy-integrator:20180715

Depo adları yalnızca küçük harfli alfasayısal karakterler, nokta, tire, alt çizgi ve eğik çizgi içerebilir.

Yapıt

Bir kapsayıcı görüntüsü veya kayıt defterindeki diğer yapıt bir veya daha fazla etiketle ilişkilendirilir, bir veya daha fazla katmana sahiptir ve bir bildirimle tanımlanır. Bu bileşenlerin birbiriyle nasıl ilişkili olduğunu anlamak, kayıt defterinizi etkili bir şekilde yönetmenize yardımcı olabilir.

Etiket

Bir görüntünün veya başka bir yapıtın etiketi , onun sürümünü belirtir. Depodaki tek bir yapıta bir veya birden çok etiket atanabilir ve "etiketsiz" de olabilir. Diğer bir ifadeyle, görüntünün verileri (katmanları) kayıt defterinde kalırken görüntüdeki tüm etiketleri silebilirsiniz.

Depo (veya depo ve ad alanı) ile bir etiket görüntünün adını tanımlar. Gönderme veya çekme işleminde adını belirterek görüntüyü gönderip çekebilirsiniz. Docker komutlarınızda sağlamazsanız etiket latest varsayılan olarak kullanılır.

Kapsayıcı görüntülerini etiketleme yönteminiz, bunları geliştirmek veya dağıtmak için senaryolarınız tarafından yönlendirilir. Örneğin, temel görüntülerinizi korumak için kararlı etiketler ve görüntüleri dağıtmak için benzersiz etiketler önerilir. Daha fazla bilgi için bkz. kapsayıcı görüntülerini etiketleme ve sürüm oluşturma için Öneriler.

Etiket adlandırma kuralları için Docker belgelerine bakın.

Katman

Kapsayıcı görüntüleri ve yapıtları bir veya daha fazla katmandan oluşur. Farklı yapıt türleri katmanları farklı tanımlar. Örneğin, bir Docker kapsayıcı görüntüsünde her katman Dockerfile'da görüntüyü tanımlayan bir satıra karşılık gelir:

Layers of a container image

Kayıt defterindeki yapıtlar ortak katmanları paylaşarak depolama verimliliğini artırır. Örneğin, farklı depolardaki birkaç görüntünün ortak ASP.NET Temel katmanı olabilir, ancak bu katmanın yalnızca bir kopyası kayıt defterinde depolanır. Katman paylaşımı, düğümlere katman dağıtımlarını da iyileştirir ve ortak katmanları paylaşan birden çok yapıt vardır. Zaten bir düğümdeki bir görüntü temel olarak ASP.NET Core katmanını içeriyorsa, aynı katmana başvuran farklı bir görüntünün sonraki çekmesi katmanı düğüme aktarmaz. Bunun yerine, düğümde zaten var olan katmana başvurur.

Olası katman düzenlemelerine karşı güvenli yalıtım ve koruma sağlamak için, katmanlar kayıt defterleri arasında paylaşılmaz.

Bildirim

Kapsayıcı kayıt defterine gönderilen her kapsayıcı görüntüsü veya yapıtı bir bildirimle ilişkilendirilir. İçerik gönderildiğinde kayıt defteri tarafından oluşturulan bildirim, yapıtları benzersiz olarak tanımlar ve katmanları belirtir.

Linux hello-world görüntüsü için temel bir bildirim aşağıdakine benzer:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 1510,
    "digest": "sha256:fbf289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e"
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 977,
      "digest": "sha256:2c930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced"
    }
  ]
}

Az acr manifest list-metadata Azure CLI komutuyla bir deponun bildirimlerini listeleyebilirsiniz:

az acr manifest list-metadata --name <repositoryName> --registry <acrName>

Örneğin, "acr-helloworld" deposunun bildirimlerini listeleyin:

az acr manifest list-metadata --name acr-helloworld --registry myregistry
[
  {
    "digest": "sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108",
    "tags": [
      "latest",
      "v3"
    ],
    "timestamp": "2018-07-12T15:52:00.2075864Z"
  },
  {
    "digest": "sha256:3168a21b98836dda7eb7a846b3d735286e09a32b0aa2401773da518e7eba3b57",
    "tags": [
      "v2"
    ],
    "timestamp": "2018-07-12T15:50:53.5372468Z"
  },
  {
    "digest": "sha256:7ca0e0ae50c95155dbb0e380f37d7471e98d2232ed9e31eece9f9fb9078f2728",
    "tags": [
      "v1"
    ],
    "timestamp": "2018-07-11T21:38:35.9170967Z"
  }
]

Bildirim özeti

Bildirimler benzersiz bir SHA-256 karması veya bildirim özeti ile tanımlanır. Her resim veya yapıt (etiketli olsun veya olmasın) özetine göre tanımlanır. Özet değeri, yapıtın katman verileri başka bir yapıtınkiyle aynı olsa bile benzersizdir. Bu mekanizma, aynı etiketli görüntüleri tekrar tekrar kayıt defterine göndermenizi sağlayan mekanizmadır. Örneğin, her görüntü benzersiz özetiyle tanımlandığından kayıt defterinize hatasız olarak tekrar tekrar gönderebilirsiniz myimage:latest .

Çekme işleminde özetini belirterek kayıt defterinden bir yapıt çekebilirsiniz. Benzer şekilde etiketlenmiş bir görüntü daha sonra kayıt defterine gönderilse bile görüntü sürümünün çekilmesini garanti ettiğinden bazı sistemler özet tarafından çekilecek şekilde yapılandırılabilir.

Önemli

Aynı etiketlere sahip değiştirilmiş yapıtları tekrar tekrar gönderirseniz, etiketlenmemiş ancak kayıt defterinizde alan kullanmaya devam eden "yalnız bırakılmış" yapıtlar oluşturabilirsiniz. Etiketlenmemiş görüntüler, görüntüleri etikete göre listelediğinizde veya görüntülediğinizde Azure CLI'da veya Azure portalında gösterilmez. Ancak katmanları hala var ve kayıt defterinizde yer kaplar. Etiketlenmemiş bir görüntünün silinmesi, bildirim tek veya son görüntü olduğunda belirli bir katmana işaret eden kayıt defteri alanı boşaltır. Etiketlenmemiş görüntüler tarafından kullanılan alan boşaltma hakkında bilgi için bkz . Azure Container Registry'de kapsayıcı görüntülerini silme.

Yapıtı adresleme

Docker veya diğer istemci araçlarıyla gönderme ve çekme işlemleri için bir kayıt defteri yapıtını ele almak için, tam kayıt defteri adını, depo adını (varsa ad alanı yolu dahil) ve bir yapıt etiketini veya bildirim özetini birleştirin. Bu terimlerin açıklamaları için önceki bölümlere bakın.

Etikete göre adres: [loginServerUrl]/[repository][:tag]

Özete göre adres: [loginServerUrl]/[repository@sha256][:digest]

Bir Azure kapsayıcı kayıt defterine yapıtları çekmek veya göndermek için Docker veya diğer istemci araçlarını kullanırken, kayıt defterinin oturum açma sunucusu adı olarak da adlandırılan tam URL'sini kullanın. Azure bulutunda, bir Azure kapsayıcı kayıt defterinin tam URL'si biçimindedir myregistry.azurecr.io (tümü küçük harftir).

Dekont

  • Kayıt defteri oturum açma sunucusu URL'sinde gibi myregistry.azurecr.io:443bir bağlantı noktası numarası belirtemezsiniz.
  • Komutunuzda bir etiket latest sağlamazsanız etiket varsayılan olarak kullanılır.

Etikete göre gönder

Örnekler:

docker push myregistry.azurecr.io/samples/myimage:20210106

docker push myregistry.azurecr.io/marketing/email-sender

Etikete göre çekme

Örneğin:

docker pull myregistry.azurecr.io/marketing/campaign10-18/email-sender:v2

Bildirim özetiyle çekme

Örneğin:

docker pull myregistry.azurecr.io/acr-helloworld@sha256:0a2e01852872580b2c2fea9380ff8d7b637d3928783c55beb3f21a6e58d5d108

Sonraki adımlar

Azure Container Registry'de kayıt defteri depolama ve desteklenen içerik biçimleri hakkında daha fazla bilgi edinin.

Azure Container Registry'den görüntü göndermeyi ve çekmeyi öğrenin.