Sdílet prostřednictvím


Spuštění kontejnerizovaných úkolů se zásadami restartování

Nasazení kontejnerů ve službě Azure Container Instances je jednoduché a rychlé. Proto je tato platforma vhodná pro úkoly, které se spouští jen jednou, jako je sestavení, testování nebo vykreslení image v instanci kontejneru.

Pomocí konfigurovatelných zásad restartování můžete určit, že se kontejnery po dokončení jejich procesů zastaví. Vzhledem k tomu, že Azure účtuje instance kontejnerů o sekundu, účtují se vám pouze výpočetní prostředky používané při spuštění kontejneru, který spouští vaši úlohu.

Příklady uvedené v tomto článku používají Azure CLI. Musíte mít místně nainstalované Rozhraní příkazového řádku Azure CLI verze 2.0.21 nebo novější nebo rozhraní příkazového řádku v Azure Cloud Shellu.

Zásady restartování kontejneru

Při vytváření skupiny kontejnerů ve službě Azure Container Instances můžete zadat jedno ze tří nastavení zásad restartování.

Zásada restartování Popis
Always Kontejnery ve skupině kontejnerů se restartují vždy. Tato zásada je výchozím nastavením použitým v případě, že při vytváření kontejneru není zadána žádná zásada restartování.
Never Kontejnery ve skupině kontejnerů se nerestartují nikdy. Kontejnery se spouštějí nejvýše jednou.
OnFailure Kontejnery ve skupině se restartují jen v případě, že proces spuštěný v kontejneru nebude úspěšný (když skončí nenulovým ukončovacím kódem). Kontejnery se spouštějí aspoň jednou.

Poznámka:

Pokud je vaše skupina kontejnerů nakonfigurovaná s IP adresou, může se tato IP adresa při restartování skupiny kontejnerů změnit.

Zadání zásad restartování

Způsob zadávání zásad restartování závisí na tom, jak vytváříte instance kontejneru, jako jsou azure CLI, rutiny Azure PowerShellu nebo na webu Azure Portal. V Azure CLI zadejte --restart-policy parametr při volání příkazu az container create.

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mycontainerimage \
    --restart-policy OnFailure

Příklad dokončení spuštění

Pokud chcete zobrazit zásadu restartování v akci, vytvořte instanci kontejneru z image Microsoft aci-wordcount a zadejte zásadu OnFailure restartování. Tento ukázkový kontejner spustí skript Pythonu, který ve výchozím nastavení analyzuje text Hamleta Shakespeara, zapíše 10 nejběžnějších slov do STDOUT a pak ukončí.

Spusťte ukázkový kontejner pomocí následujícího příkazu az container create :

az container create \
    --resource-group myResourceGroup \
    --name mycontainer \
    --image mcr.microsoft.com/azuredocs/aci-wordcount:latest \
    --restart-policy OnFailure

Azure Container Instances spustí kontejner a po skončení aplikace (v tomto případě skriptu) ho zastaví. Když Služba Azure Container Instances zastaví kontejner, jehož zásadou restartování je Never , nebo OnFailurese stav kontejneru nastaví na Terminated (Ukončeno). Stav kontejneru můžete zkontrolovat pomocí příkazu az container show :

az container show \
    --resource-group myResourceGroup \
    --name mycontainer \
    --query containers[0].instanceView.currentState.state

Příklad výstupu:

"Terminated"

Jakmile je stav ukázkového kontejneru Terminated (Ukončeno), můžete si prohlédnout výstupy úlohy, když zobrazíte protokoly kontejneru. Pokud chcete zobrazit na výstup skriptu, spusťte příkaz az container logs:

az container logs --resource-group myResourceGroup --name mycontainer

Výstup:

[('the', 990),
 ('and', 702),
 ('of', 628),
 ('to', 610),
 ('I', 544),
 ('you', 495),
 ('a', 453),
 ('my', 441),
 ('in', 399),
 ('HAMLET', 386)]

Tento příklad ukazuje výstup, který skript odeslal do stDOUT. Kontejnerizované úlohy ale můžou místo toho zapisovat výstup do trvalého úložiště pro pozdější načtení. Například do sdílené složky Azure.

Další kroky

Scénáře založené na úlohách, jako je dávkové zpracování velké datové sady s několika kontejnery, můžou využívat vlastní proměnné prostředí nebo příkazové řádky za běhu.

Podrobnosti o tom, jak zachovat výstup kontejnerů, které se spustí k dokončení, najdete v tématu Připojení sdílené složky Azure se službou Azure Container Instances.