在Azure上,如何按计划运行短暂的Docker容器?


12

我有一个相当简单的Unix shell脚本,打包在Azure容器注册表中托管的Alpine Linux Docker容器中。VM使用cron运行以下脚本:

docker login <snip>
docker pull example.com/bar:latest
docker run  example.com/bar:latest

我是否可以不用VM而是使用Azure服务,也许可以使用某种调度程序在Azure容器实例上运行它?

我的动机是不想维护虚拟机并为此付费。

Answers:


10

如您建议的那样,Azure容器实例(ACI)可能是一个不错的选择。这些使您可以直接在Azure上运行容器,而无需管理虚拟机,并按使用容器的时间计费。

尽管该博客上的一个演示中提到了Kubernetes,但是ACI的想法是您可以通过Azure CLI使用来创建容器az container create,就像在本地工作站上使用一样docker create

若要创建容器,可以使用Azure CLI(az命令,请参阅快速入门文档)或Azure Cloud Shell。

您可能需要在其他地方的计划中创建/运行容器-Azure Functions可能是从计划的函数运行“容器创建”命令的好地方。它支持bash,PowerShell和其他语言 -全部在Windows上运行。

如果您想在不运行VM或不学习Kubernetes的情况下继续使用Docker容器,这可能是一个不错的选择。

或者,您可以将所有代码移到Azure Functions中,但这是一个更大的决定。

更新: 2019年1月-Azure Logic应用也可以用于运行计划的任务


我不知道我可以将PowerShell或Bash用于Azure Functions!谢谢
Sijmen Mulder

是的,您可以从Azure Functions运行任何可执行文件,此概述doc中明确提到了bash 。要调用PowerShell模块,请参阅此博客
RichVel

通常使用云功能(例如Azure功能,AWS Lambda等)来运行用于配置云服务(例如,设置新的云环境)的安装脚本。因此,您可以期望所有无服务器服务和框架都支持运行bash或类似服务。传统上,您要设置的第一台VM是一台“控制主机”服务器,用作运行所有环境的所有设置的位置。无服务器运行所有此类脚本意味着无需主机付费。如果遭到入侵,控制服务器将泄漏您的环境,旧脚本以及可能缓存的密码的地图。无服务器bash更安全。
simbo1905

不是所有的FaaS(无服务器)服务都支持bash。实际上,AWS Lambda仅通过自定义图层支持bash,自定义图层是2018年底添加的功能-您可以使用此开源图层来简化bash的运行。通常,无服务器/ FaaS服务支持特定的语言,一些提供商启用了扩展语言的方式-例如,AWS具有Layers,而Google具有允许任何Docker容器运行的FaaS服务。
RichVel

为简单起见,如果您不想使用图层-可以编写一个运行bash的Node / Python Lambda,而无需使用图层-请参见lambdash作为一个示例。
RichVel


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.