Compartilhar via

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

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

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

先决条件

请登录您的容器注册表

可通过多种方式向容器注册表 进行身份验证

在命令行中工作时,建议使用 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 登录。 有关管理身份验证凭据的最佳做法,请参阅 docker 登录 命令参考。

例如,你可能在自动化场景中向注册表分配了服务主体。 运行以下命令时,在出现提示时以交互方式提供服务主体 appID(用户名)和密码:

docker login myregistry.azurecr.cn

提示

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

拉取一个公共 Nginx 镜像

首先,将公共 Nginx 镜像拉取到本地计算机。 此示例提取 官方 Nginx 映像

docker pull nginx

在本地运行容器

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

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

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

本地计算机上的 Nginx

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

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

创建映像的别名

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

docker tag nginx myregistry.azurecr.cn/samples/nginx

有关使用命名空间进行标记的详细信息,请参阅存储库命名空间最佳做法](container-registry-best-practices.md#repository-namespaces)。

将映像推送到注册表

使用专用注册表的完全限定路径标记映像后,可以使用 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 以查看正在运行的容器。

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

删除映像(可选)

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

docker rmi myregistry.azurecr.cn/samples/nginx

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

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

后续步骤

了解基础知识后,即可开始使用注册表。 例如,将容器镜像从你的注册表中部署到: