使用 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,然后向注册表进行身份验证:

注意

在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud 来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.
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 映像拉取到本地计算机。 此示例提取 官方 Nginx 图像

docker pull nginx

在本地运行容器

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

docker run -it --rm -p 8080:80 nginx

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

本地计算机上的 Nginx

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

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

创建映像的别名

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

docker tag nginx 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 中进行。