快速入门:使用 Azure PowerShell 创建专用容器注册表

Azure 容器注册表是用于生成、存储和管理容器映像和相关项目的专用注册表服务。 在本快速入门中,你将使用 Azure PowerShell 创建一个 Azure 容器注册表实例。 然后,使用 Docker 命令将容器映像推送到注册表中,最终从注册表提取并运行该映像。

先决条件

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

本快速入门需要 Azure PowerShell 模块。 运行 Get-Module -ListAvailable Az 即可确定已安装的版本。 如果需要进行安装或升级,请参阅安装 Azure PowerShell 模块

还必须在本地安装 Docker。 Docker 提供的包适用于 macOSWindowsLinux 系统。

登录 Azure

使用 Connect-AzAccount -Environment AzureChinaCloud 命令登录到 Azure 订阅,并按屏幕说明操作。

Connect-AzAccount -Environment AzureChinaCloud

创建资源组

通过 Azure 进行身份验证以后,请使用 New-AzResourceGroup 创建资源组。 资源组是在其中部署和管理 Azure 资源的逻辑容器。

New-AzResourceGroup -Name myResourceGroup -Location ChinaEast2

创建容器注册表

接下来,请使用 New-AzContainerRegistry 命令在新的资源组中创建容器注册表。

注册表名称在 Azure 中必须是唯一的,并且包含 5 到 50 个小写字母数字字符。 以下示例创建名为“mycontainerregistry”的注册表。在以下命令中替换 mycontainerregistry,然后运行该命令以创建注册表:

$registry = New-AzContainerRegistry -ResourceGroupName "myResourceGroup" -Name "mycontainerregistry" -EnableAdminUser -Sku Basic

提示

本快速入门将创建一个“基本”注册表。该注册表已针对成本进行优化,是可供开发人员了解 Azure 容器注册表的选项。 选择其他层,以获得更高的存储和映像吞吐量,以及使用专用终结点的连接等功能。 有关可用服务层级 (SKU) 的详细信息,请参阅容器注册表服务层级

登录到注册表

在推送和拉取容器映像之前,必须使用 Connect-AzContainerRegistry cmdlet 登录到注册表。 下面的示例使用的凭据与你使用 Connect-AzAccount -Environment AzureChinaCloud cmdlet 向 Azure 进行身份验证时登录所用的凭据相同。

注意

在以下示例中,$registry.Name 的值是资源名称,而不是完全限定的注册表名称。

Connect-AzContainerRegistry -Name $registry.Name

该命令在完成后返回 Login Succeeded

将映像推送到注册表

要将映像推送到 Azure 容器注册表,首先必须具有一个映像。 如果还没有任何本地容器映像,请运行以下 docker pull 命令,拉取现有公共映像。 例如,从 Microsoft Container Registry 中拉取 hello-world 映像。

docker pull mcr.microsoft.com/hello-world

将映像推送到注册表之前,必须使用注册表登录服务器的完全限定的名称进行标记。 登录服务器名称采用 <registry-name>.azurecr.cn(必须全小写)格式,例如 mycontainerregistry.azurecr.cn。

使用 docker tag 命令标记映像。 使用 ACR 实例的登录服务器名称替换 <login-server>

docker tag mcr.microsoft.com/hello-world <login-server>/hello-world:v1

示例:

docker tag mcr.microsoft.com/hello-world mycontainerregistry.azurecr.cn/hello-world:v1

最后,使用 docker push 将映像推送到注册表实例。 使用注册表实例的登录服务器名称替换 <login-server>。 此示例创建 hello-world 存储库,其中包含 hello-world:v1 映像。

docker push <login-server>/hello-world:v1

将映像推送到容器注册表后,请从本地 Docker 环境中删除 hello-world:v1 映像。 (请注意,此 docker rmi 命令不从 Azure 容器注册表中的 hello-world 存储库删除该映像。)

docker rmi <login-server>/hello-world:v1

从注册表运行映像

现在,可以使用 docker run 从容器注册表拉取并运行 hello-world:v1 容器映像:

docker run <login-server>/hello-world:v1  

示例输出:

Unable to find image 'mycontainerregistry.azurecr.cn/hello-world:v1' locally
v1: Pulling from hello-world
Digest: sha256:662dd8e65ef7ccf13f417962c2f77567d3b132f12c95909de6c85ac3c326a345
Status: Downloaded newer image for mycontainerregistry.azurecr.cn/hello-world:v1

Hello from Docker!
This message shows that your installation appears to be working correctly.

[...]

清理资源

用完在本快速入门中创建的资源后,请使用 Remove-AzResourceGroup 命令删除资源组、容器注册表以及其中存储的容器映像:

Remove-AzResourceGroup -Name myResourceGroup

后续步骤

本快速入门介绍了如何使用 Azure PowerShell 创建 Azure 容器注册表、推送容器映像,以及提取和运行注册表中的映像。 请继续阅读 Azure 容器注册表教程,以更深入地了解 ACR。