你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:将容器应用程序部署到 Azure 容器实例
这是由三个部分组成的系列教程的最后一个教程。 在本系列教程的前几篇文章中,我们已创建一个容器映像并将其推送到 Azure 容器注册表。 本文是本系列教程的最后一篇,介绍如何将容器部署到 Azure 容器实例。
在本教程中,你将了解:
- 将容器从 Azure 容器注册表部署到 Azure 容器实例
- 在浏览器中查看正在运行的应用程序
- 显示容器的日志
必须满足以下要求才能完成本教程:
Azure CLI:必须在本地计算机上安装 Azure CLI 2.0.29 或更高版本。 要查找版本,请运行 az --version
。 如需进行安装或升级,请参阅安装 Azure CLI。
Docker:本教程假设读者基本了解核心 Docker 概念,如容器、容器映像和基本的 docker
命令。 有关 Docker 和容器的基础知识,请参阅 Docker 概述。
Docker:要完成本教程,需在本地安装 Docker。 Docker 提供用于在 macOS、Windows 和 Linux 上配置 Docker 环境的包。
重要
由于 Azure Cloud Shell 不包含 Docker 守护程序,因此,必须在本地计算机上安装 Azure CLI 和 Docker 引擎才能完成本教程。 不能在本教程中使用 Azure Cloud Shell。
在本部分,我们将使用 Azure CLI 来部署第一篇教程中生成的,并已在第二篇教程中推送到 Azure 容器注册表的映像。 在继续操作之前,请确保完成这些教程。
部署托管在专用 Azure 容器注册表(例如第二篇教程中创建的注册表)中的映像时,必须提供用于访问该注册表的凭据。
许多方案的最佳做法是创建和配置拥有对注册表的拉取权限的 Microsoft Entra 服务主体。 请参阅使用 Azure 容器注册表从 Azure 容器实例进行身份验证,获取示例脚本以创建具有必要权限的服务主体。 请记下服务主体 ID 和服务主体密码。 部署容器时将使用这些凭据访问注册表。
此外,还需要容器注册表登录服务器的全名(请将 <acrName>
替换为注册表的名称):
az acr show --name <acrName> --query loginServer
现在,使用 az container create 部署容器。 将 <acrLoginServer>
替换为从前一命令中获得的值。 将 <service-principal-ID>
和 <service-principal-password>
替换为你为访问注册表而创建的服务主体 ID 和密码。 将 <aciDnsLabel>
替换为所需的 DNS 名称。
az container create --resource-group myResourceGroup --name aci-tutorial-app --image <acrLoginServer>/aci-tutorial-app:v1 --cpu 1 --memory 1 --registry-login-server <acrLoginServer> --registry-username <service-principal-ID> --registry-password <service-principal-password> --ip-address Public --dns-name-label <aciDnsLabel> --ports 80
将在几秒钟内收到来自 Azure 的初始响应。 在创建容器实例时所在的 Azure 区域中,--dns-name-label
值必须是唯一的。 如果在执行命令时收到 DNS 名称标签错误消息,请修改前一命令中的值。
若要查看部署状态,请使用 az container show:
az container show --resource-group myResourceGroup --name aci-tutorial-app --query instanceView.state
重复 az container show 命令,直到状态从“挂起”更改为“正在运行”为止,此过程应不到 1 分钟。 当容器状态为“正在运行”时,请继续执行下一步。
部署成功后,使用 az container show 命令显示容器的完全限定域名 (FQDN):
az container show --resource-group myResourceGroup --name aci-tutorial-app --query ipAddress.fqdn
例如:
"aci-demo.eastus.azurecontainer.io"
若要查看正在运行的应用程序,请从喜欢的浏览器中导航到此限定的 DNS 名称:
还可查看容器的日志输出:
az container logs --resource-group myResourceGroup --name aci-tutorial-app
示例输出:
listening on port 80
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET / HTTP/1.1" 200 1663 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
::ffff:10.240.0.4 - - [21/Jul/2017:06:00:02 +0000] "GET /favicon.ico HTTP/1.1" 404 150 "http://aci-demo.eastus.azurecontainer.io/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
如果不再需要在本系列教程中创建的任何资源,可以执行 az group delete 命令删除资源组和其中包含的所有资源。 此命令将删除你创建的容器注册表、正在运行的容器和所有相关资源。
az group delete --name myResourceGroup
本教程已完整演示将容器部署到 Azure 容器实例的过程。 已完成以下步骤:
- 使用 Azure CLI 从 Azure 容器注册表部署了容器
- 已在浏览器中查看了应用程序
- 已查看容器日志
有了一定的基础知识后,请继续深入了解 Azure 容器实例,例如容器组的工作原理: