使用 Docker CLI 将你的第一个映像推送到 Azure 容器注册表

Azure 容器注册表可存储和管理专用容器映像和其他项目,类似于 Docker Hub 存储公共 Docker 容器映像的方式。 可以使用 Docker 命令行接口 (Docker CLI) 对容器注册表执行登录推送拉取和其他容器映像操作。

在以下步骤中,你将下载一个公共 Nginx 映像,为你的专用 Azure 容器注册表标记该映像,将它推送到你的注册表,然后从注册表中拉取它。

先决条件

  • Azure 容器注册表 - 在 Azure 订阅中创建容器注册表。 例如,使用 Azure 门户Azure CLIAzure PowerShell
  • Docker CLI - 还必须在本地安装 Docker。 Docker 提供的包可在任何 macOSWindowsLinux 系统上轻松配置 Docker。

登录到注册表

通过多种方式验证专用容器注册表。

在命令行中操作时,建议的方法是使用 Azure CLI 命令 az acr login。 例如,若要登录到名为 myregistry 的注册表,请登录到 Azure CLI,然后向注册表进行身份验证:

备注

请先运行 az cloud set -n AzureChinaCloud 更改云环境,然后才能在 Azure 中国世纪互联中使用 Azure CLI。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

az login
az acr login --name myregistry

也可以使用 docker login 登录。 例如,你可能在自动化方案中向注册表分配了服务主体。 运行以下命令时,收到提示后,请以交互方式提供服务主体 appID(用户名)和密码。 有关管理登录凭据的最佳做法,请参阅 docker login 命令参考:

docker login myregistry.azurecr.cn

完成后,这两个命令将返回 Login Succeeded

备注

  • 你可能需要将 Visual Studio Code 与 Docker 扩展配合使用,以更快、更方便地登录。

提示

使用 docker login 以及标记要推送到注册表的映像时,请始终指定完全限定的注册表名称(全部小写)。 在本文的示例中,完全限定的名称为 myregistry.azurecr.cn

拉取一个公共 Nginx 映像

首次,将一个公共 Nginx 映像拉取到本地计算机。 此示例从 Azure 容器注册表中拉取映像。

docker pull mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine

在本地运行容器

执行以下 docker run 命令,以交互方式在端口 8080 上启动 Nginx 容器的本地实例 (-it)。 --rm 参数指定在停止容器时应将其删除。

docker run -it --rm -p 8080:80 mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine

浏览到 http://localhost:8080,查看由正在运行的容器中的 Nginx 提供服务的默认网页。 应看到类似于下面的页面:

本地计算机上的 Nginx

由于已使用 -it 以交互方式启动了容器,因此在浏览器中导航到该容器后,可在命令行中查看 Nginx 服务器的输出。

若要停止并删除容器,请按 Control+C

创建映像的别名

运行 docker tag,使用注册表的完全限定路径创建映像的别名。 此示例指定了 samples 命名空间,以免注册表根目录中出现混乱。

docker tag mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine myregistry.azurecr.cn/samples/nginx

有关使用命名空间进行标记的详细信息,请参阅 Azure 容器注册表的最佳做法存储库命名空间部分。

将映像推送到注册表

使用专用注册表的完全限定路径标记映像后,可以使用 docker push 将其推送到注册表:

docker push myregistry.azurecr.cn/samples/nginx

从注册表中提取映像

使用 docker pull 命令从注册表提取映像:

docker pull myregistry.azurecr.cn/samples/nginx

启动 Nginx 容器

使用 docker run 命令运行已从注册表提取的映像:

docker run -it --rm -p 8080:80 myregistry.azurecr.cn/samples/nginx

浏览到 http://localhost:8080 以查看正在运行的容器。

若要停止并删除容器,请按 Control+C

删除映像(可选)

如果不再需要 Nginx 映像,可以使用 docker rmi 命令在本地将其删除。

docker rmi myregistry.azurecr.cn/samples/nginx

若要从 Azure 容器注册表中删除映像,可以使用 Azure CLI 命令az acr repository delete。 例如,以下命令删除 samples/nginx:latest 标记引用的清单、所有唯一的层数据以及引用此清单的其他所有标记。

az acr repository delete --name myregistry --image samples/nginx:latest

后续步骤

了解基础知识后,便可以开始使用注册表了! 例如,将容器映像从注册表部署到:

可以选择安装适用于 Visual Studio Code 的 Docker 扩展以及适用于 Azure 容器注册表的 Azure 帐户扩展。 通过 Azure 容器注册表拉取和推送映像,或者运行 ACR 任务,这一切都可以在 Visual Studio Code 中进行。