Recommendations pro označování a správu verzí imagí kontejnerů

Při odesílání imagí kontejnerů do registru kontejneru a jejich následném nasazení potřebujete strategii pro označování a správu verzí imagí. Tento článek popisuje dva přístupy a jejich umístění během životního cyklu kontejneru:

  • Stabilní značky – značky , které opakovaně používáte, například k označení hlavní nebo podverze, například mycontainerimage:1.0.
  • Jedinečné značky – jiná značka pro každou image, kterou nasdílíte do registru, například mycontainerimage:abc123.

Stabilní značky

Doporučení: Použití stabilních značek k údržbě základních imagí pro sestavení kontejneru Vyhněte se nasazení se stabilními značkami, protože tyto značky nadále přijímají aktualizace a můžou v produkčních prostředích zavádět nekonzistence.

Stabilní značky znamenají, že vývojář nebo systém sestavení můžou dál stahovat konkrétní značku, která bude dál dostávat aktualizace. Stabilní neznamená, že se obsah zamrznul. Místo toho stabilní znamená, že image by měla být stabilní pro záměr této verze. Aby zůstal "stabilní", může být obsluhován k použití oprav zabezpečení nebo aktualizací architektury.

Příklad

Tým architektury dodává verzi 1.0. Vědí, že budou doručovat aktualizace, včetně menších aktualizací. Pro podporu stabilních značek pro danou hlavní a podverzi mají dvě sady stabilních značek.

  • :1 – stabilní značka pro hlavní verzi. 1 představuje "nejnovější" nebo "nejnovější" verzi 1.*.
  • :1.0– stabilní značka pro verzi 1.0, která vývojářům umožňuje vytvořit vazbu na aktualizace verze 1.0 a při vydání se nepřeposílat na verzi 1.1.

Tým také používá :latest značku, která odkazuje na nejnovější stabilní značku bez ohledu na aktuální hlavní verzi.

Pokud jsou k dispozici aktualizace základních imagí nebo jakýkoli typ servisní verze architektury, aktualizují se image se stabilními značkami na nejnovější hodnotu digest, která představuje nejnovější stabilní verzi této verze.

V tomto případě se hlavní i vedlejší značky neustále obsluhují. Ze scénáře základní image to umožňuje vlastníkovi image poskytovat obsluhované image.

Odstranění neoznačené manifesty

Pokud se obrázek se stabilní značkou aktualizuje, dříve označený obrázek není označený a výsledkem je osamocený obrázek. Manifest předchozí image a jedinečná data vrstvy zůstanou v registru. Pokud chcete zachovat velikost registru, můžete pravidelně odstraňovat nezoznačené manifesty vyplývající ze stabilních aktualizací imagí. Například automatické vyprázdnění nezoznačené manifesty starší než zadaná doba trvání nebo nastavení zásad uchovávání pro nezoznačené manifesty.

Jedinečné značky

Doporučení: Pro nasazení používejte jedinečné značky, zejména v prostředí, které by se mohlo škálovat na více uzlech. Pravděpodobně budete chtít úmyslná nasazení konzistentní verze komponent. Pokud se váš kontejner restartuje nebo orchestrátor škáluje více instancí, hostitelé nebudou omylem načíst novější verzi, nekonzistentní s ostatními uzly.

Jedinečné označování jednoduše znamená, že každá image vložená do registru má jedinečnou značku. Značky se znovu nepoužívají. K vygenerování jedinečných značek můžete použít několik vzorů, mezi které patří:

  • Razítko data a času – tento přístup je poměrně běžný, protože můžete jasně zjistit, kdy byla image vytvořena. Jak ho ale korelovat zpět do systému sestavení? Musíte najít sestavení, které bylo dokončeno ve stejnou dobu? V jakém časovém pásmu jste? Jsou všechny vaše systémy sestavení kalibrované do UTC?

  • Potvrzení Gitu – Tento přístup funguje, dokud nespustíte podporu aktualizací základních imagí. Pokud dojde k aktualizaci základní image, spustí se váš systém sestavení se stejným potvrzením Gitu jako předchozí build. Základní image má ale nový obsah. Obecně platí, že potvrzení Gitu poskytuje částečně stabilní značku.

  • Hodnota hash manifestu – Každá image kontejneru vložená do registru kontejneru je přidružená k manifestu, který je identifikován jedinečnou hodnotou hash SHA-256 nebo hodnotou hash. I když je hodnota hash jedinečná, je dlouhá, obtížně čitelná a nesouvisející s prostředím sestavení.

  • ID sestavení – Tato možnost může být nejlepší, protože je pravděpodobně přírůstková a umožňuje korelovat zpět ke konkrétnímu sestavení a najít všechny artefakty a protokoly. Stejně jako manifest digest může být pro člověka obtížné číst.

    Pokud má vaše organizace několik systémů sestavení, předpona značky s názvem systému sestavení je variantou této možnosti: <build-system>-<build-id>. Můžete například odlišit buildy od systému sestavení Jenkinse týmu rozhraní API a systému sestavení webového týmu Azure Pipelines.

Uzamčení nasazených značek imagí

Osvědčeným postupem je uzamknout všechny nasazené značky image nastavením jeho write-enabled atributu na false. Tento postup brání neúmyslně odebrání image z registru a případnému narušení nasazení. Do kanálu verze můžete zahrnout krok uzamčení.

Uzamčením nasazené image můžete z registru odebrat další, nenasazené image pomocí funkcí Azure Container Registry k údržbě registru. Například automaticky vyprázdnit nezoznačené manifesty nebo odemknuté obrázky starší než zadanou dobu trvání nebo nastavit zásadu uchovávání informací pro nezoznačené manifesty.

Další kroky

Podrobnější diskuzi o konceptech v tomto článku najdete v blogovém příspěvku Docker Tagging: Osvědčené postupy pro označování a správu verzí imagí Dockeru.

Pokud chcete maximalizovat výkon a nákladově efektivní využití registru kontejnerů Azure, přečtěte si osvědčené postupy pro Azure Container Registry.