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ů.
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:
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.