使用重新啟動原則執行容器化工作
在 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 停止其重新啟動原則為 Never
或 OnFailure
的容器時,容器的狀態會設定為 [已終止]。 您可以使用 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 檔案共用。