4

我按照这个 azure 示例在 python 中为 Azure IoT Edge开发了我的模块connectedbarmodule 。然后,我按照这个链接在我的设备(树莓派 3)中部署我的模块。但是,我的模块无法下载。然后,我在我的设备上执行了以下命令:

sudo docker logs -f edgeAgent

我有以下错误:

Error calling Create module ConnectedBarModule:
Get https://iotedgeregistery.azurecr.io/v2/connectedbarmodule/manifests/0.0.1-amd64:
unauthorized: authentication required) 

这是关于存储我的模块图像的 Azure 容器注册表的 url。我不知道如何获取 iotedge 下载我的模块的凭据。

我测试了这个案例,不是在 Azure 容器注册表中,而是在我的 dockerhub 帐户中,它可以工作,我的设备可以下载该模块。

如果有人有想法,这将是非常好的。

先感谢您。

4

2 回答 2

3

你的 Azure 容器注册表是私有的。因此,您需要为其添加凭据,以便 edgeAgent 从私有注册表下载图像:

  • 通过 Azure 门户:在“设置模块”的第一步中 在此处输入图像描述

  • 通过 Visual Studio Code 中的部署完成后:

“在 VS Code 资源管理器中,打开 .env 文件。使用从 Azure 容器注册表复制的用户名和密码值更新字段。” (https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-c-module#add-your-registry-credentials

于 2018-11-12T08:37:13.737 回答
2

对于您的问题,您可以使用docker login -u <ACR username> -p <ACR password> <ACR login server>您发布的示例中显示的命令。关于 Azure Container Registry 的身份验证,有两种方式可供选择。

一种是使用 Azure 门户上的 ACR 中显示的用户名和密码。

在此处输入图像描述

另一个是你可以使用Azure Service Principal,你可以为用户设置权限。遵循文档Azure Container Registry authentication with service principals。我会比第一种更建议这种方式,因为它更安全。

这只是一个建议。希望这会对您有所帮助,如果您需要更多帮助,请告诉我消息。

于 2018-11-12T09:37:11.390 回答