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.

Konfigurovatelné zásady restartování umožňují nastavit, aby se kontejnery po dokončení procesů zastavily. Instance kontejnerů se účtují po sekundách. Proto se vám účtují jenom výpočetní prostředky používané po dobu, kdy kontejner běží a provádí vaši úlohu.

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

Zásady restartování kontejneru

Při vytváření skupiny kontejnerů v 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. Jde o výchozí nastavení, které se použije vždy, když při vytvoření kontejneru nezadáte zásadu 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, jakým zadáte zásadu restartování, závisí na tom, jak vytváříte instance kontejneru, například pomocí Azure CLI, Azure PowerShell rutin nebo v Azure Portal. V Azure CLI zadejte --restart-policy parametr při volání 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 Shakespearova Hamleta, zapíše 10 nejběžnějších slov do stDOUT a pak se 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ž Azure Container Instances zastaví kontejner, jehož zásada restartování je Never nebo OnFailure, stav kontejneru je nastavený na 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 se stav ukázkového kontejneru zobrazí Ukončeno, zobrazí se jeho výstup úlohy zobrazením protokolů kontejneru. Spuštěním příkazu az container logs zobrazte výstup skriptu:

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žít vlastní proměnné prostředí nebo příkazové řádky za běhu.

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