GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Co je to manifest obrazu Docker?

Manifesty Docker popisují vrstvy uvnitř obrázku. Manifest umožňuje přesné srovnání dvou obrázků, i když mají přiřazeny různé značky.

Manifesty jsou vyjádřeny v JSON a obsahují informace o vrstvách a architektuře obrázku. Klient Docker používá manifesty ke zjištění, zda je obrázek kompatibilní s aktuálním zařízením. Tyto informace pak použije k určení, jak spustit nové kontejnery.

Formát manifestu

Schéma manifestu je aktuálně ve verzi 2. Úplný soubor deklaruje svou verzi schématu a poté seznam položek manifestu dostupných pro obrázek. Každá položka představuje jinou variantu obrázku, například x86 a ARM64.

Manifest libovolného obrázku můžete zobrazit pomocí docker manifest inspect příkaz. To funguje jak s místními obrazy, tak s obrazy uloženými ve vzdáleném registru, jako je Docker Hub.

docker manifest inspect my-image:latest

Manifest je seznam vrstev zahrnutých v obrázku. Můžete vidět hash obsahu vrstvy a její celkovou velikost.

Pokud přidáte --verbose vlajky, získáte o obrázku ještě více informací. To zahrnuje značku obrázku (v Ref pole), jeho architekturu a operační systém.

Docker ve výchozím nastavení nenačte podrobnosti manifestu z nezabezpečených registrů. Pokud potřebujete použít nesprávně zabezpečený registr, přidejte --insecure příznak do vašeho docker manifest příkazy.

Manifesty a budovy s více oblouky

Historicky Docker nepodporoval více architektur obrázků. Obrázky bylo možné použít pouze na strojích se stejnou architekturou, na které byly postaveny. To se rychle ukázalo jako omezující, protože Docker našel více využití v serverových prostředích a na novějších strojích založených na ARM.

Kromě toho, že umožňují jedinečnou identifikaci obrázků, manifesty usnadňují sestavení více architektur. Pokud si prohlédnete obrázek, který podporuje více architektur, uvidíte mírně odlišný výstup manifestu:

docker manifest inspect php:latest

Spuštěním výše uvedeného příkazu se zobrazí manifest pro oficiální obrázek PHP Docker. Ze snímku obrazovky můžete vidět, že je k dispozici několik možností platformy, včetně AMD64 a ARM. Zkrátili jsme úplný seznam, který ve skutečnosti obsahuje osm různých podporovaných architektur.

Manifesty umožňují autorům obrázků inzerovat podporu pro více architektur pod jednou značkou obrázku. Klient Docker vybere vhodnou verzi obrazu pro svou platformu na základě možností v seznamu. Očekává se, že autoři budou seskupovat pouze obrázky, které nabízejí stejnou funkcionalitu – nemělo by docházet k žádným změnám nad rámec cílové architektury nebo operačního systému.

Každá architektura v seznamu odkazuje na jinou manifestu prostřednictvím digest pole. Odkazovaný manifest bude běžný soubor s jednou architekturou. Docker porovná aktuální platformu se správným manifestem s jedním obloukem a poté tento soubor načte, aby určil konečný seznam vrstev obrázků.

Pomocí docker manifest můžete ručně vytvářet obrazy s více architekturou příkaz. Vytvořte každý z jednotlivých obrázků a vložte je do registru. Poté použijte docker manifest create příkaz ke spojení obrázků do nového sdíleného manifestu pod jedinou značkou.

# on an AMD64 machine
docker build -t my-image:amd64 .
docker push my-image:amd64

# on an ARM machine
docker build -t my-image:arm .
docker push my-image:arm

# now combine the manifests
docker manifest create my-image:latest 
--amend my-image:x64
--amend my-image:arm
docker manifest push my-image:latest

Pomocí manifest create pomocí --amend flag umožňuje sloučit více nezávislých manifestů dohromady. Konečný manifest je poté odeslán do Docker Hub s latest štítek. Uživatelé AMD64 a ARM budou moci oba vytvářet kontejnery z tohoto obrazu.

Ruční sestavování víceobloukových obrázků není povinné. Můžete použít buildx příkaz místo toho značně zjednodušit proces.

docker buildx build --platform linux/amd64,linux/arm64/v8 --tag my-image:latest

Výsledkem tohoto jediného příkazu je obraz, který funguje na platformách AMD64 i ARM64. Pod pokličkou stále vytváří víceobloukový seznam manifestů, takže je užitečné porozumět vnitřnímu fungování toho, jak se obrázky propojují.

Anotování manifestů

Docker vám umožňuje ručně přepsat data manifestu prostřednictvím anotací. Mezi podporovaná pole patří informace o architektuře a operačním systému.

Použijte docker manifest annotate příkaz k nastavení anotací. Pokud anotujete obrázek s jednou architekturou, zadejte značku obrázku, která na něj odkazuje. U obrázků s více oblouky budete potřebovat značku celkového obrázku i značku jednotlivého manifestu v seznamu manifestů s více oblouky.

docker manifest annotate my-image:latest my-image:amd64 --os-version linux

Tento příkaz označí AMD64 verzi my-image:latest image jako kontejner založený na Linuxu.

Anotace není často nutné nastavovat ručně. Obvykle jsou automaticky odvozeny z prostředí sestavení. Můžete použít annotate příkaz k přidání chybějících polí nebo změně konfigurace obrázku v budoucnu.

Přehled

Manifesty Docker popisují vrstvy obrázku a architektury, které podporuje. Manifest může být buď jednoduchá architektura, podporující konkrétní platformu, nebo multi-architektura. V druhém případě soubor obsahuje seznam odkazů na manifesty s jedním obloukem, které obsahuje.

Ruční interakce s manifesty by měla být vzácná, ale je možná pomocí docker manifest velitelská skupina. Nyní je běžnější automatizovat sestavení více oblouků pomocí Buildx, které nabízí zjednodušené manifestní sestavení.


Docker
  1. Co je nového v Docker Compose v2?

  2. Aktualizace nasazeného kontejneru na základě obrazu Dockeru

  3. Jak potvrdit změny v obrazu Dockeru

  1. Co je Docker (a Linux kontejnery?)

  2. Extrahovat soubor z obrázku Dockeru?

  3. Jak použít Dockerfile k vytvoření Docker Image

  1. Co je to zlatý obrázek?

  2. Jak upravit obrázky Docker

  3. Co je uvnitř obrázku/kontejneru Dockeru?