0

我们正在将 Jenkins 设置迁移到 Azure。

拥有 Azure 节点后,我将运行以下命令:

az login -i
az acr login -n myregistry

从那里,我可以从注册表中提取图像。

我的容器docker内部映射了套接字,它与docker主机交互以启动更多容器。但是当我尝试docker pull从容器内部时,我得到

docker: Error response from daemon: Get https://myregistry.azurecr.io/v2/myimage/manifests/mytag:
 unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information.
See 'docker run --help'.

解决该问题的一种方法是az在我的容器中安装并在启动时调用相同的登录。但是我不想修改图像。

是否有其他方法可以使用主机已获得 ACR 授权的事实?主机中是否有任何文件夹可以映射到我的容器中,以便它使用主机的登录信息?

谢谢

4

1 回答 1

0

当您使用 Azure CLI 命令az acr login时,它会将凭据存储到您的 docker 凭据文件~/.docker/config.json中。因此,您可以将 docker 凭据文件挂载到容器的同一路径。然后容器内的 docker 也可以使用凭证从您的 ACR 中提取图像。

更新:

为什么不工作,docker 将凭证存储在文件 /home/user/.docker/config.json 中。当您使用 Azure CLI 命令az acr login时,它将使用您使用该命令登录的当前用途,az login然后存储本地 docker 服务器的凭据。这是通过我提供给您的方式的示例:

在此处输入图像描述

于 2021-01-22T06:58:58.973 回答