教程:部署并使用 Azure 容器注册表

Azure 容器注册表 (ACR) 是容器映像的专用注册表。 可以通过专用容器注册表安全地生成和部署应用程序和自定义代码。 本教程的第 2 部分(共 7 部分)介绍如何部署 ACR 实例并向其推送容器映像。 你将学习如何执行以下操作:

  • 创建 Azure 容器注册表 (ACR) 实例
  • 标记 ACR 的容器映像
  • 向 ACR 上传映像
  • 查看注册表中的映像

在其他教程中,此 ACR 实例将与 AKS 中的 Kubernetes 群集集成,而应用程序则通过映像进行部署。

准备阶段

上一教程中,已经为一个 Azure Voting 应用程序示例创建了容器映像。 如果尚未创建 Azure Voting 应用映像,请返回到教程 1 - 创建容器映像

此教程需要运行 Azure CLI 2.0.53 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

创建 Azure 容器注册表

若要创建 Azure 容器注册表,首先需要一个资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。

使用 az group create 命令创建资源组。 以下示例在 chinaeast2 区域中创建名为 myResourceGroup 的资源组:

az group create --name myResourceGroup --location chinaeast2

使用 az acr create 命令创建 Azure 容器注册表实例,并提供你自己的注册表名称。 注册表名称在 Azure 中必须唯一,并且包含 5-50 个字母数字字符。 在本教程的剩余部分,请使用 <acrName> 作为容器注册表名称的占位符。 提供自己的唯一注册表名称。 “基本”SKU 是一个针对成本优化的入口点,适用于可以对存储和吞吐量进行均衡考虑的开发目的。

az acr create --resource-group myResourceGroup --name <acrName> --sku Basic

登录到容器注册表

若要使用 ACR 实例,必须先登录。 使用 az acr login 命令并提供一个唯一名称,该名称是在上一步提供给容器注册表的。

az acr login --name <acrName>

完成后,该命令会返回“登录成功”消息。

标记容器映像

若要查看当前本地映像的列表,请使用 docker images 命令:

$ docker images

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
azure-vote-front             latest              4675398c9172        13 minutes ago      694MB
redis                        latest              a1b99da73d05        7 days ago          106MB
tiangolo/uwsgi-nginx-flask   flask               788ca94b2313        9 months ago        694MB

若要将 azure-vote-front 容器映像与 ACR 配合使用,需使用注册表的登录服务器地址对映像进行标记。 在将容器映像推送到映像注册表时,使用此标记进行路由。

若要获取登录服务器地址,请使用 az acr list 命令并查询是否存在 loginServer,如下所示:

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

现在,使用容器注册表的 acrloginServer 地址标记本地 azure-vote-front 映像。 若要指示映像版本,请将 :v1 添加到映像名称的末尾:

docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v1

若要验证是否已应用标记,请再次运行 docker images。 系统会使用 ACR 实例地址和版本号对映像进行标记。

$ docker images

REPOSITORY                                           TAG           IMAGE ID            CREATED             SIZE
azure-vote-front                                     latest        eaf2b9c57e5e        8 minutes ago       716 MB
mycontainerregistry.azurecr.cn/azure-vote-front      v1            eaf2b9c57e5e        8 minutes ago       716 MB
redis                                                latest        a1b99da73d05        7 days ago          106MB
tiangolo/uwsgi-nginx-flask                           flask         788ca94b2313        8 months ago        694 MB

将映像推送到注册表

生成并标记映像后,将 azure-vote-front 映像推送到 ACR 实例。 使用 docker push 并提供自己的适用于映像名称的 acrLoginServer 地址,如下所示:

docker push <acrLoginServer>/azure-vote-front:v1

可能需要数分钟才能将映像推送到 ACR。

列出注册表中的映像

若要返回已推送到 ACR 实例的映像列表,请使用 az acr repository list 命令。 提供自己的 <acrName>,如下所示:

az acr repository list --name <acrName> --output table

以下示例输出列出了注册表中提供的 azure-vote-front 映像:

Result
----------------
azure-vote-front

若要查看特定映像的标记,请使用 az acr repository show-tags 命令,如下所示:

az acr repository show-tags --name <acrName> --repository azure-vote-front --output table

以下示例输出显示了在上一步骤中标记的 v1 映像:

Result
--------
v1

现在,你的容器映像已存储在专用 Azure 容器注册表实例中。 在下一教程中,此映像会从 ACR 部署到 Kubernetes 群集。

后续步骤

在本教程中,你创建了一个 Azure 容器注册表并推送了可以在 AKS 群集中使用的映像。 你已了解如何:

  • 创建 Azure 容器注册表 (ACR) 实例
  • 标记 ACR 的容器映像
  • 向 ACR 上传映像
  • 查看注册表中的映像

继续学习下一篇教程,了解如何在 Azure 中部署 Kubernetes 群集。