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 místně nainstalované Rozhraní příkazového řádku Azure CLI verze 2.0.21 nebo vyšší nebo použít 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.

Určení zásady restartování

Způsob, jakým zadáte zásadu restartování, závisí na tom, jak vytvoří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í příkazu az container create.

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

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

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 výstupu 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ásady restartování jsou Never nebo OnFailure, stav kontejneru se 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 se u ukázkového kontejneru zobrazí stav Terminated (Ukončeno), můžete zobrazit výstup jeho úlohy v protokolech 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 výstupu STDOUT. Kontejnerizované úlohy ale místo toho můžou zapsat svůj 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 za běhu využívat vlastní proměnné prostředí nebo příkazové řádky .

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