你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Docker CLI 在 Azure 中部署容器实例
使用 Azure 容器实例在 Azure 中快速方便地运行无服务器 Docker 容器。 开发云原生应用时,如果希望从本地部署无缝切换到云部署,可以按需部署到容器实例。
本快速入门介绍如何使用本机 Docker CLI 命令部署 Docker 容器,并使其应用程序在 Azure 容器实例中可用。 此功能是通过 Docker 与 Azure 之间的集成启用的。 在执行 docker run
部署命令几秒钟之后,可以浏览到正在容器中运行的应用程序:
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
对于本快速入门,你需要安装适用于 Windows 或 macOS 的 Docker Desktop 2.3.0.5 或更高版本。 或者安装适用于 Linux 的 Docker ACI Integration CLI。
重要
并非 Azure 容器实例的所有功能都受支持。 如需提供有关 Docker 与 Azure 集成的反馈,可在 aci-integration-beta GitHub 存储库中创建问题。
创建 Azure 上下文
若要使用 Docker 命令在 Azure 容器实例中运行容器,请先登录到 Azure:
docker login azure --tenant-id "[tenant ID]"
浏览到 Microsoft Entra ID 属性以查找租户 ID。
在系统提示时输入或选择 Azure 凭据。
通过运行 docker context create aci
创建 ACI 上下文。 此上下文将 Docker 与 Azure 订阅和资源组相关联,以便你可以创建和管理容器实例。 例如,创建名为 myacicontext 的上下文:
docker context create aci myacicontext
出现提示时,选择你的 Azure 订阅 ID,然后选择现有资源组或“创建新的资源组”。 如果选择新的资源组,则创建的新资源组将使用系统生成的名称。 Azure 容器实例(例如所有 Azure 资源)都必须部署到资源组中。 使用资源组可以组织和管理相关的 Azure 资源。
运行 docker context ls
以确认已将 ACI 上下文添加到 Docker 上下文:
docker context ls
创建容器
创建 Docker 上下文后,可以在 Azure 中创建容器。 本快速入门将使用公共 mcr.microsoft.com/azuredocs/aci-helloworld
映像。 此映像打包了一个用 Node.js 编写的小型 Web 应用程序,该应用程序提供静态 HTML 页面。
首先,切换到 ACI 上下文。 所有后续 Docker 命令都在此上下文中运行。
docker context use myacicontext
运行以下 docker run
命令,通过向 Internet 公开的端口 80 创建 Azure 容器实例:
docker run -p 80:80 mcr.microsoft.com/azuredocs/aci-helloworld
成功部署的示例输出:
[+] Running 2/2
⠿ hungry-kirch Created 5.1s
⠿ single--container--aci Done 11.3s
hungry-kirch
运行 docker ps
以获取有关正在运行的容器的详细信息,包括公共 IP 地址:
docker ps
示例输出显示公共 IP 地址,在本例中为 52.230.225.232:
CONTAINER ID IMAGE COMMAND STATUS PORTS
hungry-kirch mcr.microsoft.com/azuredocs/aci-helloworld Running 52.230.225.232:80->80/tcp
现在,在浏览器中转到该 IP 地址。 如果看到类似于下图的网页,那么恭喜你! 现已成功将 Docker 容器中运行的应用程序部署到 Azure。
拉取容器日志
当需要对容器或它运行的应用程序进行故障排除时(或者只是查看其输出),请首先查看容器实例的日志。
例如,运行 docker logs
命令以查看 ACI 上下文中 hungry-kirch 容器的日志:
docker logs hungry-kirch
此输出显示容器的日志,并应显示在浏览器中查看应用程序时生成的 HTTP GET 请求。
listening on port 80
::ffff:10.240.255.55 - - [07/Jul/2020: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 - - [07/Jul/2020: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 - - [07/Jul/2020: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"
清理资源
对容器完成操作后,运行 docker rm
将其删除。 此命令停止并删除 Azure 容器实例。
docker rm hungry-kirch
后续步骤
在本快速入门中,你已使用 Docker 与 Azure 之间的集成从公共映像中创建了 Azure 容器实例。 可以在 Docker 文档中详细了解集成方案。
还可以使用用于 Visual Studio Code 的 Docker 扩展来实现一种集成体验,以便开发、运行和管理容器、映像和上下文。
若要使用 Azure 工具创建和管理容器实例,请参阅使用 Azure CLI、Azure PowerShell、Azure 门户和 Azure 资源管理器的其他快速入门。
如果你希望使用 Docker Compose 在本地定义并运行多容器应用程序,然后再切换到 Azure 容器实例,请继续学习以下教程。