我正在关注 本教程 展示如何使用 Linux 容器开发 IoT Edge 模块。
我已经创建了一个 Azure 注册表(我称之为
myazureregistry
)。
现在我正在尝试将示例模块“docker push”到这个注册表:
sudo docker push myazureregistry.azurecr.io/filtermodule:0.0.1-amd64
唉,运行这个命令的时候,遇到了如下错误:
unauthorized:需要认证,访问 https://aka.ms/acr/authorization 了解更多信息。
我查看了网页。它指出:
docker 推送图像的能力 [...] 需要身份验证 与使用授权身份的注册表。
但是我已经成功登录了
sudo az acr login --name myazureregistry
我在这里错过了什么?
我在使用新服务主体甚至全新帐户时多次遇到该错误消息,忘记了我用来运行 shell 的用户(您使用 sudo az acr 登录命令)ACR特定角色,如“acr push”(也允许拉取图像)。
我没有像您在这里那样在 ACR 上亲自使用管理员用户,但是您必须在命令行工具中使用该身份才能通过该管理员帐户进行访问。 如果您可以在链接到您的订阅的 Azure AD 中执行角色分配,请尝试分配一个类似于上面命名的 acr 角色,然后再次执行您的工作流程。希望它有助于弄清楚实际上是什么身份向 ACR 发出请求。