你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Azure CLI(预览版)在 Azure 容器实例中部署现成容器

现成容器将 ACI 的简单性与现成 VM 的低成本相结合,使客户能够轻松且经济地大规模运行容器化可中断工作负载。 使用 Azure 容器实例运行无服务器现成容器。 如果想要以低成本在未使用的 Azure 容量上运行可中断的容器化工作负载,并且不需要完整的容器业务流程平台(如 Azure Kubernetes 服务),可以按需将应用程序部署到现成容器。

在本快速入门中,你将使用 Azure CLI 和现成容器部署一个 helloworld 容器。 在执行单个部署命令几秒钟之后,可以浏览到容器日志:

  • 本快速入门需要 Azure CLI 版本 2xxx 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。

创建资源组

Azure 容器实例(例如所有 Azure 资源)都必须部署到资源组中。 使用资源组可以组织和管理相关的 Azure 资源。

首先,使用以下 az group create 命令在 westus 位置中创建一个名为 myResourceGroup 的资源组:

az group create --name myResourceGroup --location westus

创建容器

创建资源组后,可在 Azure 中运行现成容器。 若要使用 Azure CLI 创建现成容器组,请在 az container create 命令中提供资源组名称、容器实例名称、容器映像和具有“Spot”值的新的“priority”属性。 本快速入门将使用公共 mcr.microsoft.com/azuredocs/aci-helloworld 映像。 此映像打包了一个用 Node.js 编写的小型 Web 应用程序,该应用程序提供静态 HTML 页面。

可以通过指定要打开的一个或多个端口、一个 DNS 名称标签(或同时指定两者)来向 Internet 公开现成容器。 在本快速入门中,你将使用不带 DNS 名称标签的 helloworld 映像部署容器。 它将不是可公开访问的。 可以查询容器日志,以验证容器是否在默认端口 80 上侦听。

执行类似于以下的命令以启动容器实例。

az container create --resource-group acispotdemo --name acispotclitest --image mcr.microsoft.com/azuredocs/aci-helloworld --priority spot

在几秒钟内,你应当会从 Azure CLI 收到响应,它指出部署已完成。 使用 az container show 命令检查其状态:

az container show --resource-group acispotdemo --name acispotclitest --query "{ProvisioningState:provisioningState}" --out table

运行此命令时,会显示容器的完全限定域名 (FQDN) 及其预配状态。

ContainerGroupName                               ProvisioningState
---------------------------------  -------------------
acispotclitest                        Succeeded

如果容器的 ProvisioningState 为“已成功”,恭喜! 现已成功将 Docker 容器中运行的应用程序部署到 Azure。

拉取容器日志

当需要对容器或它运行的应用程序进行故障排除时(或者只是查看其输出),请首先查看容器实例的日志。

使用 az container logs 命令拉取容器实例日志:

az container logs --resource-group acispotdemo --name acispotclitest

输出会显示容器的日志,并应显示以下输出

listening on port 80

附加输出流

除了查看日志之外,还可将本地标准输出和标准错误流附加到容器的数据流中。

首先,执行 az container attach 命令来将本地控制台附加到容器的输出流:

az container attach --resource-group acispotdemo --name acispotclitest

附加后,刷新浏览器数次,以生成其他的一些输出。 完成后,使用 Control+C 分离控制台。 应该会看到与下面类似的输出:

Container 'acispotclitest' is in state 'Running'...
Start streaming logs:
listening on port 80

清理资源

完成容器的操作后,可使用 az container delete 命令将其删除:

az container delete --resource-group acispotdemo --name acispotclitest

若要验证已删除该容器,请执行 az container list 命令:

az container list --resource-group acispotdemo --output table

acispotclitest 容器不应出现在命令的输出中。 如果资源组中没有任何其他容器,则不会显示任何输出。

如果已使用完 acispotdemo 资源组及其包含的所有资源,请使用 az group delete 命令将其删除:

az group delete --name acispotdemo

后续步骤

在本教程中,你使用 Azure CLI 在 Azure 容器实例上创建了一个具有默认配额和逐出策略的现成容器。