你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 容器实例在 Azure 中快速方便地运行无服务器 Docker 容器。 当你不需要像 AzureKubernetes 服务这样的完整容器业务流程平台时,可以按需将应用程序部署到容器实例。
本快速入门将使用 Azure CLI 部署一个独立的 Docker 容器,并使其应用程序可通过完全限定的域名 (FQDN) 使用。 在执行单个部署命令几秒钟之后,可以浏览到正在容器中运行的应用程序:
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 入门。
如果要在本地运行 CLI 引用命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 要完成身份验证过程,请执行终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
按照提示,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 使用和管理 Azure CLI 中的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
本快速入门需要 Azure CLI 2.0.55 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。
警告
最佳做法:通过命令行界面 (CLI) 传递的用户凭据以纯文本形式存储在后端。 以纯文本形式存储凭证存在安全风险;Microsoft 建议客户将用户凭据存储在 CLI 环境变量中,以确保它们在存储在后端时进行加密/转换。
创建资源组
Azure 容器实例(例如所有 Azure 资源)都必须部署到资源组中。 使用资源组可以组织和管理相关的 Azure 资源。
首先,使用 az group create 命令在 eastus 位置创建名为 myResourceGroup 的资源组:
az group create --name myResourceGroup --location eastus
创建容器
创建资源组后,可在 Azure 中运行容器。 若要使用 Azure CLI 创建容器实例,请在 az container create 命令中提供资源组名称、容器实例名称和 Docker 容器映像。 本快速入门将使用公共 mcr.microsoft.com/azuredocs/aci-helloworld 映像。 此映像打包了一个用 Node.js 编写的小型 Web 应用程序,该应用程序提供静态 HTML 页面。
可以通过指定要打开的一个或多个端口、一个 DNS 名称标签(或同时指定两者)来向 Internet 公开容器。 在本快速入门中,你将部署一个具有 DNS 名称标签的容器,以便 Web 应用可供公开访问。
执行类似于以下的命令以启动容器实例。 设置在创建实例的 Azure 区域中唯一的 --dns-name-label 值。 如果收到“DNS 名称标签不可用”错误消息,请尝试使用一个不同的 DNS 名称标签。
az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80 --os-type linux --memory 1.5 --cpu 1
若要 将容器部署到特定的可用性区域,请使用 --zone 参数并指定逻辑区域编号:
az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80 --os-type linux --memory 1.5 --cpu 1 --zone 1
重要
区域部署仅在支持可用性区域的区域中可用。 若要查看区域是否支持可用性区域,请参阅 Azure 区域列表。
在几秒钟内,你应当会从 Azure CLI 收到响应,它指出部署已完成。 使用 az container show 命令检查其状态:
az container show --resource-group myResourceGroup --name mycontainer --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table
运行此命令时,会显示容器的完全限定域名 (FQDN) 及其预配状态。
FQDN ProvisioningState
--------------------------------- -------------------
aci-demo.eastus.azurecontainer.io Succeeded
如果容器的 ProvisioningState 为 Succeeded,则在浏览器中转到其 FQDN。 如果看到类似于下图的网页,那么恭喜你! 已成功将 Docker 容器中运行的应用程序部署到 Azure。
如果应用程序起初未显示,你可能需要在 DNS 传播时等待几秒钟,然后刷新浏览器。
拉取容器日志
当需要对容器或它运行的应用程序进行故障排除时(或者只是查看其输出),请首先查看容器实例的日志。
使用 az container logs 命令拉取容器实例日志:
az container logs --resource-group myResourceGroup --name mycontainer
此输出显示容器的日志,并应显示在浏览器中查看应用程序时生成的 HTTP GET 请求。
listening on port 80
::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
附加输出流
除了查看日志之外,还可将本地标准输出和标准错误流附加到容器的数据流中。
首先,执行 az container attach 命令来将本地控制台附加到容器的输出流:
az container attach --resource-group myResourceGroup --name mycontainer
附加后,刷新浏览器数次,以生成其他的一些输出。 完成后,使用 Control+C 分离控制台。 应会显示类似于以下示例的输出:
Container 'mycontainer' is in state 'Running'...
(count: 1) (last timestamp: 2019-03-21 17:27:20+00:00) pulling image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:24+00:00) Successfully pulled image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Created container
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Started container
Start streaming logs:
listening on port 80
::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:47:01 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.56 - - [21/Mar/2019:17:47:12 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
清理资源
使用完容器后,可使用 az container delete 命令将其删除:
az container delete --resource-group myResourceGroup --name mycontainer
若要确认已删除该容器,请执行 az container list 命令:
az container list --resource-group myResourceGroup --output table
mycontainer 容器不应出现在命令的输出中。 如果资源组中没有任何其他容器,则不会显示任何输出。
如果已使用完 myResourceGroup 资源组及其包含的所有资源,请使用 az group delete 命令将其删除:
az group delete --name myResourceGroup
后续步骤
在本快速入门中,你已使用公共 Microsoft 映像创建了一个 Azure 容器实例。 若要基于专用 Azure 容器注册表生成容器映像并部署它,请继续学习 Azure 容器实例教程。
若要试用在 Azure 上的业务流程系统中运行容器的选项,请参阅 Azure Kubernetes 服务 (AKS) 快速入门。