IoT Edge: устройство не может загрузить мой модуль из реестра контейнеров Azure, но может из dockerhub

Я последовал этому примеру лазурного, чтобы разработать свой модуль connectedbarmodule на Python для Azure IoT Edge. Затем я перешел по этой ссылке, чтобы развернуть свой модуль. в моем устройстве (raspberry pi 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) 

Это URL-адрес моего реестра контейнеров Azure, где хранится образ моего модуля. Я не знаю, как получить учетные данные для iotedge для загрузки моего модуля.

Я протестировал случай, чтобы поместить образ не в реестр контейнеров Azure, а в мою учетную запись dockerhub, и он работает, мое устройство может загрузить модуль.

Если у кого-то есть идея, это было бы очень любезно.

Заранее спасибо.


person Yassir S    schedule 11.11.2018    source источник
comment
У меня такая же проблема, и ответы ниже мне не помогают. Есть другие идеи? Вы знаете, почему v2 добавляется к указанному выше URL, но не на любом этапе настройки?   -  person Mark Cooper    schedule 30.01.2019


Ответы (2)


Ваш реестр контейнеров 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)

person silent    schedule 12.11.2018

Для решения вашей проблемы вы можете использовать команду docker login -u <ACR username> -p <ACR password> <ACR login server>, которая показана в опубликованном вами примере. Что касается проверки подлинности реестра контейнеров Azure, вы можете выбрать два способа.

Один из них - использовать пользователя и пароль, которые отображаются в вашем ACR на портале Azure.

введите здесь описание изображения

Другой заключается в том, что вы можете использовать субъект-службу Azure, вы можете установить разрешение для пользователя. Следуйте документу Проверка подлинности реестра контейнеров Azure с помощью службы руководители. Я бы посоветовал этот способ гораздо больше, чем первый, потому что он безопаснее.

Это просто совет. Надеюсь, это поможет вам, и если вам понадобится дополнительная помощь, покажите мне сообщение.

person Charles Xu    schedule 12.11.2018