共用方式為


使用重新啟動原則執行容器化工作

在 Azure 容器執行個體中部署容器的簡易和快速,提供令人信服的平台,可以用來進行執行一次的工作,例如在容器執行個體中建置、測試及執行映像轉譯。

使用可設定的重新啟動原則,您可以指定當容器的程序完成時,停止容器。 因為 Azure 的容器執行個體是由第二個開始計費,所以您只需支付當執行您的工作之容器執行時所使用的計算資源。

本文所呈現的範例是使用 Azure CLI。 您必須在本機安裝 Azure CLI 版本 2.0.21 或更新版本,或者使用 Azure Cloud Shell 中的 CLI。

容器重新啟動原則

當您在 Azure Container Instances 中建立容器群組時,您可以指定三個重新啟動原則設定的其中一個。

重新啟動原則 描述
Always 容器群組中的容器一律會重新啟動。 此原則是在建立容器之際未指定重新啟動原則時所套用的「預設」設定。
Never 容器群組中的容器永不重新啟動。 容器最多執行一次。
OnFailure 容器群組中的容器只會在容器中的處理序執行失敗時 (當它以非零結束代碼終止時) 重新啟動。 容器執行至少一次。

注意

如果您的容器群組設定為 IP 位址,當容器群組重新啟動時,該 IP 位址可能會變更。

指定重新啟動原則

您指定重新啟動原則的方式取決於如何建立容器執行個體,例如使用 Azure CLI、Azure PowerShell Cmdlet,或是 Azure 入口網站。 在 Azure CLI 中,當您呼叫 az container create 時指定 --restart-policy 參數。

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

執行至完成範例

若要查看作用中的重新啟動原則,從 Microsoft aci-wordcount 映像建立容器執行個體,然後指定 OnFailure 重新啟動原則。 此範例容器會執行 Python 指令碼,根據預設,它會分析 Shakespeare 的 Hamlet 的文字,將 10 個最常見的字詞寫入 STDOUT,然後結束。

使用下列 az container create 命令執行範例容器:

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

Azure 容器執行個體會啟動容器,然後在它的應用程式 (或者是這個案例中的指令碼) 結束時停止它。 當 Azure Container Instances 停止其重新啟動原則為 NeverOnFailure 的容器時,容器的狀態會設定為 [已終止]。 您可以使用 az container show 命令來檢查容器的狀態:

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

範例輸出︰

"Terminated"

一旦範例容器的狀態顯示 [已終止],即可藉由檢視容器記錄來查看其工作輸出。 執行 az container logs 命令以檢視指令碼的輸出:

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

輸出:

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

這個範例會顯示指令碼傳送到 STDOUT 的輸出。 您容器化工作,不過,可能會改為將其輸出寫入永續性儲存體以供日後擷取。 例如,寫入至 Azure 檔案共用

下一步

針對工作型案例,例如具有數個容器的大型資料集批次處理,可利用自訂環境變數或執行階段上的命令列

如需如何保存執行至完成之容器的輸入的詳細資訊,請參閱使用 Azure Container Instances 來掛接 Azure 檔案共用