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 tanıtmaktadır.

Kayıt defteri, depolar ve yapıtlar

Kayıt Defteri

Kapsayıcı kayıt defteri, kapsayıcı görüntülerini ve ilgili yapıtları depolar ve dağıtır. Docker Hub, Docker kapsayıcı görüntülerinin genel kataloğu olarak görev alan bir genel kapsayıcı kayıt defteri örneğidir. Azure Container Registry, tümleşik kimlik doğrulaması, ağa yakın 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çeriği üzerinde doğrudan denetim sağlar.

Docker ile 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 çeşitli içerik yapıtlarını destekler.

Depo

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

  • 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 ilgili depoları ve yapıt sahipliğini tanımlamanızı sağlar. Ancak, kayıt defteri hiyerarşi olarak değil, tüm depoları bağımsız olarak yönetir. Örnek:

  • marketing/campaign10-18/web:v2
  • marketing/campaign10-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 harf alfasayısal karakterler, nokta, tire, alt çizgi ve eğik çizgi içerebilir.

Tam depo adlandırma kuralları için bkz. Open Container Initiative Distribution Specification.

Yapıt

Kayıt defterindeki bir kapsayıcı görüntüsü veya başka bir yapıt, bir veya daha fazla etiketle ilişkilendirilır, bir veya daha fazla katmana sahip olur ve bir bildirimle tanımlanır. Bu bileşenlerin birbirine ne kadar uygun olduğunu anlamak, kayıt defterinizi etkili bir şekilde yönetmenize yardımcı olabilir.

Etiket

Bir görüntünün etiketi veya başka bir yapıt, sürümünü belirtir. Depo içindeki tek bir yapıta bir veya daha fazla etiket atanabilir ve "etiketsiz" de olabilir. Başka bir ifadeyle, görüntünün verileri (katmanları) kayıt defterinde kalırken bir görüntüdeki tüm etiketleri silebilirsiniz.

Depo (veya depo ve ad alanı) ile etiket, görüntünün adını tanımlar. Bir görüntüyü, çekme veya çekme işlemi içinde adını belirterek itip çekebilirsiniz. latestDocker komutlarında bir tane sağlanmasa varsayılan olarak etiket kullanılır.

Kapsayıcı görüntülerini etiketlemek için senaryolarınızı kullanarak bunları geliştirebilir veya dağıtabilirsiniz. Ö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. Öneriler görüntülerini etiketleme ve sürümlemehakkında bilgi.

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 içinde görüntüyü tanımlayan bir satıra karşılık geliyor:

Kapsayıcı görüntüsünün katmanları

Artifacts ortak katmanları paylaşarak depolama verimliliğini artırır. Örneğin, farklı depolarda yer alan birkaç görüntü, temel ASP.NET Core ortak bir katmana sahip olabilir ancak bu katmanın yalnızca bir kopyası kayıt defterinde depolanır. Katman paylaşımı, birden çok yapıt ortak katmanları paylaşarak düğümlere katman dağıtımını da iyiler. Bir düğümde zaten bir görüntü ASP.NET Core katmanını içerirse, 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 işlemeye 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 yapılan her kapsayıcı görüntüsü veya yapıt bir bildirimiyle ilişkilendirildi. İçerik istenilirken kayıt defteri tarafından oluşturulan bildirim, yapıtları benzersiz olarak tanımlar ve katmanları belirtir.

Linux görüntüsü için temel hello-world 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 repository show-manifestsAzure CLI komutuyla deponun bildirimlerini liste bulabilirsiniz:

az acr repository show-manifests --name <acrName> --repository <repositoryName>

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

az acr repository show-manifests --name myregistry --repository acr-helloworld
[
  {
    "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

Bildirim, benzersiz bir SHA-256 karması veya bildirim özeti ile tanımlanır. Etiketlenmiş veya etiketli olsun ya da olsun her görüntü veya yapıt özet tarafından tanımlanır. Yapının katman verileri başka bir yapıtla aynı olsa bile özet değeri benzersizdir. Bu mekanizma, aynı etiketli görüntüleri kayıt defterine tekrar tekrar itmene olanak sağlar. Örneğin, her görüntü benzersiz özetle tanımlandıkları için kayıt defterinize hatasız myimage:latest bir şekilde tekrar tekrar itebilirsiniz.

Çekme işleminde özetini belirterek kayıt defterinden bir yapıt çekilebilir. Bazı sistemler, daha sonra kayıt defterine aynı etiketlenmiş bir görüntü olsa bile görüntü sürümünün çekilmelerini garantilemesi nedeniyle özetle çekmek üzere yalıtabilirsiniz.

Önemli

Değiştirilmiş yapıtları aynı etiketlerle tekrar tekrar ile iletirsanız, etiketsiz ancak kayıt defterinize alan tüketen "yalnızlar" oluşturabilirsiniz. Etiketsiz görüntüler Azure CLI'da veya Azure portal etikete göre listeleye veya görüntüye göre görüntülenirken gösterilmez. Ancak, katmanları hala mevcuttur ve kayıt defterinize alan tüketir. Etiketsiz bir görüntüyü silmek, bildirim tek veya son görüntü olduğunda kayıt defteri alanı serbest bırakarak belirli bir katmanı işaret eder. Etiketsiz görüntüler tarafından kullanılan alanı serbest bırakarak ilgili bilgi için bkz. Azure Container Registry.

Yapıt adresle

Docker veya diğer istemci araçlarıyla gönderip çekme işlemlerine yönelik 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 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]

Azure kapsayıcı kayıt defterine yapıtları çekmek veya itmek 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 bulutlarında, Azure kapsayıcı kayıt defterinin tam URL'si biçimindedir myregistry.azurecr.io (tamamı küçük harf).

Not

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

Etikete göre itme

Örnekler:

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

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

Etikete göre çekme

Örnek:

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

Bildirim özetine göre çekme

Örnek:

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

Sonraki adımlar

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

Azure Container Registry'dan görüntü Azure Container Registry.