Informace o registrech, úložištích a artefaktech

Tento článek představuje klíčové koncepty registrů kontejnerů, úložišť a imagí kontejnerů a souvisejících artefaktů.

Registry, úložiště a artefakty

Registr

Registr kontejneru je služba, která ukládá a distribuuje image kontejnerů a související artefakty. Docker Hub je příkladem veřejného registru kontejneru, který slouží jako obecný katalog imagí kontejnerů Dockeru. Azure Container Registry poskytuje uživatelům přímou kontrolu nad obsahem kontejneru s integrovaným ověřováním, geografickou replikací podporující globální distribuci a spolehlivost pro nasazení blízko sítě, konfiguraci virtuální sítě s využitím služby Private Link, uzamykání značek a mnoho dalších vylepšených funkcí.

Kromě imagí kontejnerů kompatibilních s Dockerem podporuje Azure Container Registry celou řadu artefaktů obsahu, včetně chartů Helm a formátů imagí Open Container Initiative (OCI).

Repository

Úložiště je kolekce imagí kontejnerů nebo jiných artefaktů v registru, které mají stejný název, ale různé značky. Například následující tři image jsou v úložišti acr-helloworld :

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

Názvy úložišť můžou obsahovat také obory názvů. Obory názvů umožňují identifikovat související úložiště a vlastnictví artefaktů ve vaší organizaci pomocí názvů oddělených lomítkem. Registr ale spravuje všechna úložiště nezávisle, ne jako hierarchii. Příklad:

  • marketing/kampaň10-18/web:v2
  • marketing/kampaň10-18/api:v3
  • marketing/kampaň10-18/email-sender:v2
  • product-returns/web-submission:20180604
  • produkt-returns/legacy-integrator:20180715

Názvy úložišť můžou obsahovat jenom malé alfanumerické znaky, tečky, pomlčky, podtržítka a lomítka.

Artefakt

Image kontejneru nebo jiný artefakt v registru jsou přidružené k jedné nebo více značek, mají jednu nebo více vrstev a je identifikován manifestem. Pochopení toho, jak spolu tyto komponenty souvisejí, vám můžou pomoct efektivně spravovat registr.

Značka

Značka obrázku nebo jiného artefaktu určuje jeho verzi. Jeden artefakt v úložišti může být přiřazen jeden nebo mnoho značek a může být také "neoznačené". To znamená, že můžete z image odstranit všechny značky, zatímco data image (její vrstvy) zůstanou v registru.

Úložiště (nebo úložiště a obor názvů) plus značka definuje název image. Image můžete nasdílit a vyžádat tak, že zadáte její název v operaci vložení nebo vyžádání. Značka latest se ve výchozím nastavení používá, pokud ji v příkazech Dockeru nezadáte.

Jak označíte image kontejnerů podle vašich scénářů k vývoji nebo nasazení. Pro údržbu základních imagí a jedinečných značek pro nasazování imagí se například doporučují stabilní značky. Další informace najdete v tématu Doporučení pro označování a správu verzí imagí kontejnerů.

Pravidla pojmenování značek najdete v dokumentaci k Dockeru.

Vrstva

Image kontejnerů a artefakty se skládají z jedné nebo více vrstev. Různé typy artefaktů definují vrstvy odlišně. Například v imagi kontejneru Dockeru každá vrstva odpovídá řádku v souboru Dockerfile, který definuje image:

Vrstvy image kontejneru

Artefakty v registru sdílejí společné vrstvy, což zvyšuje efektivitu úložiště. Například několik imagí v různých úložištích může mít společnou základní vrstvu ASP.NET Core, ale v registru je uložená jenom jedna kopie této vrstvy. Sdílení vrstev také optimalizuje distribuci vrstev do uzlů s několika artefakty, které sdílejí společné vrstvy. Pokud image na uzlu obsahuje jako základ vrstvu ASP.NET Core, následné načtení jiné image odkazující na stejnou vrstvu nepřenese vrstvu do uzlu. Místo toho odkazuje na vrstvu, která už v uzlu existuje.

Kvůli zajištění zabezpečené izolace a ochrany před potenciální manipulací vrstev se vrstvy nesdílí napříč registry.

Manifest

Každá image kontejneru nebo artefakt vložený do registru kontejneru je přidružená k manifestu. Manifest vygenerovaný registrem při nasdílení obsahu jednoznačně identifikuje artefakty a určuje vrstvy.

Základní manifest image Linuxu hello-world vypadá podobně jako následující:

{
  "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"
    }
  ]
}

Manifesty úložiště můžete zobrazit pomocí příkazu Azure CLI az acr manifest list-metadata:

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

Například vypíšete manifesty pro úložiště acr-helloworld:

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"
  }
]

Přehled manifestu

Manifesty jsou identifikovány jedinečnou hodnotou hash SHA-256 nebo hodnotou hash manifestu. Každý obrázek nebo artefakt – bez ohledu na to, jestli je označen nebo není označený hodnotou hash. Hodnota hash je jedinečná i v případě, že jsou data vrstvy artefaktu stejná jako u jiného artefaktu. Tento mechanismus umožňuje opakovaně odesílat identicky označené image do registru. Můžete například opakovaně odesílat myimage:latest do registru bez chyby, protože každá image je identifikována jedinečnou hodnotou hash.

Artefakt můžete vyžádat z registru zadáním jeho hodnoty hash v operaci vyžádání. Některé systémy můžou být nakonfigurované tak, aby načítá pomocí digestu, protože zaručuje načtení verze image, i když se do registru odešle identicky označená image.

Důležité

Pokud opakovaně odesíláte upravené artefakty se stejnými značkami, můžete vytvořit osamocené artefakty – artefakty, které nejsou označené, ale stále spotřebovávají místo ve vašem registru. Neoznačené obrázky se nezobrazují v Azure CLI ani na webu Azure Portal, když vypíšete nebo zobrazíte obrázky podle značky. Jejich vrstvy ale stále existují a spotřebovávají místo v registru. Odstranění neoznačené image uvolní místo v registru, pokud je manifest jediným nebo posledním obrázkem odkazující na konkrétní vrstvu. Informace o uvolnění místa používaného nezoznanými imagemi najdete v tématu Odstranění imagí kontejnerů ve službě Azure Container Registry.

Adresování artefaktu

Pokud chcete vyřešit artefakt registru pro operace zápisu a vyžádání pomocí Dockeru nebo jiných klientských nástrojů, zkombinujte plně kvalifikovaný název registru, název úložiště (včetně cesty oboru názvů, pokud je k dispozici) a značku artefaktu nebo digest manifestu. Vysvětlení těchto termínů najdete v předchozích částech.

Adresa podle značky: [loginServerUrl]/[repository][:tag]

Adresa podle digestu: [loginServerUrl]/[repository@sha256][:digest]

Při použití Dockeru nebo jiných klientských nástrojů k vyžádání nebo nasdílení artefaktů do registru kontejneru Azure použijte plně kvalifikovanou adresu URL registru, která se označuje také jako název přihlašovacího serveru . V cloudu Azure je plně kvalifikovaná adresa URL registru kontejnerů Azure ve formátu myregistry.azurecr.io (všechna malá písmena).

Poznámka:

  • V adrese URL přihlašovacího serveru registru nemůžete zadat číslo portu, například myregistry.azurecr.io:443.
  • Pokud ve svém příkazu nezadáte značku, použije se značka latest ve výchozím nastavení.

Nasdílení změn podle značky

Příklady:

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

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

Pull by tag

Příklad:

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

Stažení podle přehledu manifestu

Příklad:

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

Další kroky

Přečtěte si další informace o úložišti registru a podporovaných formátech obsahu ve službě Azure Container Registry.

Zjistěte, jak nasdílit a načíst image ze služby Azure Container Registry.