快速入门:使用 Docker CLI 在 Azure 中部署容器实例

使用 Azure 容器实例在 Azure 中快速方便地运行无服务器 Docker 容器。 开发云原生应用时,如果希望从本地部署无缝切换到云部署,可以按需部署到容器实例。

本快速入门介绍如何使用本机 Docker CLI 命令部署 Docker 容器,并使其应用程序在 Azure 容器实例中可用。 此功能是通过 Docker 与 Azure 之间的集成启用的。 在执行 docker run 部署命令几秒钟之后,可以浏览到正在容器中运行的应用程序:

App deployed using Azure Container Instances viewed in browser

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

对于本快速入门,你需要安装适用于 WindowsmacOS 的 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 --cloud-name AzureChinaCloud

在系统提示时输入或选择 Azure 凭据。

通过运行 docker context create aci 创建 ACI 上下文。 此上下文将 Docker 与 Azure 订阅和资源组相关联,以便你可以创建和管理容器实例。 例如,创建名为 myacicontext 的上下文:

docker context create aci myacicontext --resource-group <ACI_Deployment_Resource_Group> --location <ACI_Deployment_Region>

出现提示时,选择你的 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。

App deployed using Azure Container Instances viewed in browser

拉取容器日志

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

例如,运行 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 CLIAzure 门户Azure 资源管理器模板的其他快速入门。

如果你希望使用 Docker Compose 在本地定义并运行多容器应用程序,然后再切换到 Azure 容器实例,请继续学习以下教程。