Kurz: Automatizace sestavení imagí kontejneru při aktualizaci základní image v registru kontejneru Azure
ACR Tasks podporuje automatizované sestavení imagí kontejneru při aktualizaci základní image kontejneru, například při opravě operačního systému nebo aplikační architektury v jedné ze základních imagí.
V tomto kurzu se naučíte vytvořit úlohu ACR, která aktivuje sestavení v cloudu, když se základní image kontejneru odešle do stejného registru. Můžete také vyzkoušet kurz vytvoření úlohy ACR, která aktivuje sestavení image při odeslání základní image do jiného registru kontejneru Azure.
V tomto kurzu:
- Sestavit základní image
- Vytvoření image aplikace ve stejném registru pro sledování základní image
- Aktualizovat základní image tak, aby aktivovala úlohu image aplikace
- Zobrazit aktivovanou úlohu
- Ověřit aktualizovanou image aplikace
Požadavky
Dokončení předchozích kurzů
Tento kurz předpokládá, že jste už nakonfigurovali prostředí a dokončili kroky v prvních dvou kurzech v sérii, ve kterých:
- Vytvoření registru kontejneru Azure
- Vytvoření forku ukázkového úložiště
- Klonování ukázkového úložiště
- Vytvoření tokenu PAT GitHubu
Pokud jste to ještě neudělali, před pokračováním proveďte následující kurzy:
Sestavení imagí kontejnerů v cloudu pomocí Azure Container Registry Tasks
Automatizace sestavení imagí kontejnerů pomocí Azure Container Registry Tasks
Konfigurace prostředí
Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- Tento článek vyžaduje azure CLI verze 2.0.46 nebo novější. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.
Tyto proměnné prostředí naplňte hodnotami vhodnými pro vaše prostředí. Tento krok není nezbytně nutný, ale usnadní provádění víceřádkových příkazů Azure CLI v tomto kurzu. Pokud tyto proměnné prostředí nenaplníte, musíte ručně nahradit každou hodnotu tam, kde se v ukázkových příkazech objeví.
ACR_NAME=<registry-name> # The name of your Azure container registry
GIT_USER=<github-username> # Your GitHub user account name
GIT_PAT=<personal-access-token> # The PAT you generated in the second tutorial
Scénář aktualizace základní image
Tento kurz vás provede scénářem aktualizace základní image, ve které se základní image a image aplikace uchovávají v jednom registru.
Vzorový kód zahrnuje dva soubory Dockerfile: image aplikace a image, na které je založená. V následujících částech vytvoříte úlohu ACR, která automaticky aktivuje sestavení image aplikace při odeslání nové verze základní image do stejného registru kontejneru.
Dockerfile-app: Jedná se o malou webovou aplikaci Node.js, která vykreslí statickou webovou stránku zobrazující verzi Node.js, na které je založena. Řetězec verze je simulovaný: zobrazuje obsah proměnné prostředí
NODE_VERSION
, která je definovaná v základní imagi.Dockerfile-base: Image, kterou
Dockerfile-app
specifikuje jako svou základní image. Je založená na imagi Node a zahrnuje proměnnou prostředíNODE_VERSION
.
V následujících částech vytvoříte úlohu, aktualizujete hodnotu NODE_VERSION
v souboru Dockerfile základní image a potom použijete ACR Tasks k sestavení základní image. Když úloha ACR odešle do registru novou základní image, automaticky aktivuje sestavení image aplikace. Volitelně můžete spustit image kontejneru aplikace místně, abyste se mohli podívat na různé řetězce verze v sestavených imagích.
V tomto kurzu vaše úloha ACR sestaví a nasdílí image kontejneru aplikace zadanou v souboru Dockerfile. ACR Tasks může také spouštět vícekrokové úlohy pomocí souboru YAML k definování kroků pro sestavení, nabízení a volitelně testování více kontejnerů.
Sestavit základní image
Začněte vytvořením základní image pomocí rychlé úlohy ACR Tasks pomocí příkazu az acr build. Jak je popsáno v prvním kurzu série, tímto postupem se nejen sestaví image, ale v případě úspěšného sestavení se odešle do registru kontejneru.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Vytvoření úkolu
Dále pomocí příkazu az acr build-task create vytvořte úlohu:
az acr task create \
--registry $ACR_NAME \
--name baseexample1 \
--image helloworld:{{.Run.ID}} \
--arg REGISTRY_NAME=$ACR_NAME.azurecr.io \
--context https://github.com/$GIT_USER/acr-build-helloworld-node.git#master \
--file Dockerfile-app \
--git-access-token $GIT_PAT
Tento úkol se podobá úkolu vytvořenému v předchozím kurzu. Dává službě ACR Tasks pokyn aktivovat sestavení image, když se do úložiště určeného parametrem --context
odešlou potvrzení. Zatímco soubor Dockerfile použitý k sestavení image v předchozím kurzu určuje veřejnou základní image (FROM node:15-alpine
), soubor Dockerfile v této úloze Dockerfile-app určuje základní image ve stejném registru:
FROM ${REGISTRY_NAME}/baseimages/node:15-alpine
Tato konfigurace usnadňuje simulaci opravy architektury v základní imagi dále v tomto kurzu.
Sestavení kontejneru aplikace
Pomocí příkazu az acr task run ručně aktivujte úlohu a sestavte image aplikace. Tento krok je potřebný k tomu, aby úloha sleduje závislost image aplikace na základní imagi.
az acr task run --registry $ACR_NAME --name baseexample1
Jakmile se úloha dokončí, poznamenejte si ID spuštění (například „da6“), pokud chcete provést následující volitelný krok.
Volitelné: Spuštění kontejneru aplikace místně
Pokud pracujete místně (nejste v Cloud Shellu) a máte nainstalovaný Docker, spusťte kontejner, abyste zobrazili aplikaci vykreslenou ve webovém prohlížeči dříve, než opětovně sestavíte její základní image. Pokud Cloud Shell používáte, tuto část přeskočte (Cloud Shell nepodporuje az acr login
ani docker run
).
Nejprve se pomocí příkazu az acr login ověřte ve svém registru kontejneru:
az acr login --name $ACR_NAME
Teď pomocí docker run
spusťte kontejner místně. Nahraďte <run-id> ID spuštění, které najdete ve výstupu z předchozího kroku (například da6). Tento příklad pojmenuje kontejner myapp
a obsahuje --rm
parametr pro odebrání kontejneru, když ho zastavíte.
docker run -d -p 8080:80 --name myapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
V prohlížeči přejděte na http://localhost:8080
. Měli byste vidět číslo verze Node.js vykreslené na webové stránce. Mělo by vypadat takto. V dalším kroku změníte verzi tak, že do řetězce verze přidáte znak „a“.
Pokud chcete kontejner zastavit a odebrat, spusťte následující příkaz:
docker stop myapp
Výpis sestavení
Dále pomocí příkazu az acr task list-runs vypište spuštění úloh, která služba ACR Tasks dokončila pro váš registr:
az acr task list-runs --registry $ACR_NAME --output table
Pokud jste dokončili předchozí kurz (a nevymazali jste registr), měli byste vidět výstup podobný následujícímu. Poznamenejte si počet spuštění úloh a ID nejnovějšího spuštění, abyste je mohli porovnat s výstupem po aktualizaci základní image, kterou provedete v další části.
RUN ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- --------- -------------------- ----------
cax baseexample1 linux Succeeded Manual 2020-11-20T23:33:12Z 00:00:30
caw taskhelloworld linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:29
cav example2 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:55
cau example1 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:40
cat taskhelloworld linux Succeeded Manual 2020-11-20T23:07:29Z 00:00:27
Aktualizace základní image
V tomto kroku budete simulovat opravu architektury v základní imagi. Upravte Dockerfile-base a za číslo verze definované v NODE_VERSION
přidejte znak „a“:
ENV NODE_VERSION 15.2.1a
Spusťte rychlou úlohu, která sestaví upravenou základní image. Poznamenejte si ID spuštění uvedené ve výstupu.
az acr build --registry $ACR_NAME --image baseimages/node:15-alpine --file Dockerfile-base .
Jakmile se sestavení dokončí a úloha ACR odešle novou základní image do registru, aktivuje se sestavení image aplikace. Než úloha, kterou jste vytvořili dříve, aktivuje sestavení image aplikace, může to chvíli trvat, protože musí zjistit nově sestavenou a odeslanou základní image.
Výpis aktualizovaného sestavení
Teď, když jste aktualizovali základní image, znovu zobrazte seznam spuštění úloh a porovnejte ho s předchozím seznamem. Pokud se napoprvé výstup neliší, opakovaně spouštějte příkaz, aby se nové spuštění úlohy v seznamu zobrazilo.
az acr task list-runs --registry $ACR_NAME --output table
Výstup je podobný tomuto. Triggerem pro poslední spuštěné sestavení by měl být „Image Update“ značící, že se úloha zahájila rychlou úlohou základní image.
Run ID TASK PLATFORM STATUS TRIGGER STARTED DURATION
-------- -------------- ---------- --------- ------------ -------------------- ----------
ca11 baseexample1 linux Succeeded Image Update 2020-11-20T23:38:24Z 00:00:34
ca10 taskhelloworld linux Succeeded Image Update 2020-11-20T23:38:24Z 00:00:24
cay linux Succeeded Manual 2020-11-20T23:38:08Z 00:00:22
cax baseexample1 linux Succeeded Manual 2020-11-20T23:33:12Z 00:00:30
caw taskhelloworld linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:29
cav example2 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:55
cau example1 linux Succeeded Commit 2020-11-20T23:16:07Z 00:00:40
cat taskhelloworld linux Succeeded Manual 2020-11-20T23:07:29Z 00:00:27
Pokud chcete provést následující volitelný krok spuštění nově vytvořeného kontejneru a zobrazit aktualizované číslo verze, poznamenejte si hodnotu RUN ID pro sestavení aktivované aktualizací image (v předchozím výstupu je to "ca11").
Volitelné: Spuštění nově sestavené image
Pokud pracujete místně (nejste v Cloud Shellu) a máte nainstalovaný Docker, spusťte novou image aplikace, jakmile se její sestavení dokončí. <run-id>
nahraďte hodnotou ID spuštění, kterou jste získali v předchozím kroku. Pokud Cloud Shell používáte, tuto část přeskočte (Cloud Shell nepodporuje docker run
).
docker run -d -p 8081:80 --name updatedapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>
V prohlížeči přejděte na http://localhost:8081. Měli byste vidět aktualizované číslo verze Node.js (se znakem „a“) na webové stránce:
Důležité je uvědomit si, že jste aktualizovali základní image s novým číslem verze, ale novou verzi zobrazuje poslední sestavená image aplikace. Služba ACR Tasks převzala změnu základní image a automaticky znovu sestavila image aplikace.
Pokud chcete kontejner zastavit a odebrat, spusťte následující příkaz:
docker stop updatedapp
Další kroky
V tomto kurzu jste zjistili, jak pomocí úlohy automaticky aktivovat sestavení imagí kontejnerů při aktualizaci základní image.
Úplný pracovní postup pro správu základních imagí pocházejících z veřejného zdroje najdete v tématu Jak využívat a udržovat veřejný obsah pomocí Azure Container Registry Tasks.
Teď přejděte k dalšímu kurzu, kde se dozvíte, jak aktivovat úkoly podle definovaného plánu.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro