使用重启策略运行容器化任务
在 Azure 容器实例中部署容器的简便性和速度,使该服务成了可用于执行一次性任务(例如,在容器实例中生成、测试渲染作业并制作其映像)的引人注目的平台。
使用可配置的重启策略,可将容器指定为在完成其进程后停止。 由于 Azure 按秒对容器实例计费,因此只需为在执行任务的容器运行时使用的计算资源付费。
本文演示的示例使用 Azure CLI。 必须在本地安装 Azure CLI 2.0.21 或更高版本。
容器重启策略
在 Azure 容器实例中创建容器组时,可以指定三个重启策略设置中的一个。
重启策略 | 说明 |
---|---|
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 脚本,默认情况下,该脚本会分析莎士比亚著作哈姆雷特中的文本,将 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 容器实例停止重启策略为 Never
或 OnFailure
的某个容器时,该容器的状态将设置为 Terminated。 可以使用 az container show 命令检查容器的状态:
az container show \
--resource-group myResourceGroup \
--name mycontainer \
--query containers[0].instanceView.currentState.state
示例输出:
"Terminated"
当示例容器的状态显示为 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 容器实例的 Azure 文件共享。