首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IotEdge -调用创建模块图像分类器服务时出错

IotEdge -调用创建模块图像分类器服务时出错
EN

Stack Overflow用户
提问于 2019-05-24 18:02:22
回答 1查看 457关注 0票数 0

我对Azure IoT Edge非常陌生,我正在尝试部署到我的树莓派:使用Azure IoT Edge和认知服务进行图像识别,但在构建和推送IoT Edge解决方案并将其部署到单个设备ID之后,我看不到Docker PS -a和Iotedge列表中列出的这两个模块,当尝试在EdgeAgent日志中检查它时,出现错误消息,似乎EdgeAgent在创建这些模块(相机捕获和图像分类器服务)时出现错误

我尝试过: 1.从新的文件夹包重新生成镜像2.手动从Azure门户拉取镜像,并通过脚本手动运行镜像

我被困在这上面好几天了。

在deployment.arm32v7.json中,对于这些模块,我使用注册的注册表url定义了Image:

代码语言:javascript
复制
"modules": {
          "camera-capture": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "zzzz.azurecr.io/camera-capture-opencv:1.1.12-arm32v7",
              "createOptions": "{\"Env\":[\"Video=0\",\"azureSpeechServicesKey=2f57f2d9f1074faaa0e9484e1f1c08c1\",\"AiEndpoint=http://image-classifier-service:80/image\"],\"HostConfig\":{\"PortBindings\":{\"5678/tcp\":[{\"HostPort\":\"5678\"}]},\"Devices\":[{\"PathOnHost\":\"/dev/video0\",\"PathInContainer\":\"/dev/video0\",\"CgroupPermissions\":\"mrw\"},{\"PathOnHost\":\"/dev/snd\",\"PathInContainer\":\"/dev/snd\",\"CgroupPermissions\":\"mrw\"}]}}"
            }
          },
          "image-classifier-service": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "zzzz.azurecr.io/image-classifier-service:1.1.5-arm32v7",
              "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/pi/images:/images\"],\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"80\"}],\"5679/tcp\":[{\"HostPort\":\"5679\"}]}}}"
            }

来自EdgeAgent日志的错误消息:

代码语言:javascript
复制
(Inner Exception #0) Microsoft.Azure.Devices.Edge.Agent.Edgelet.EdgeletCommunicationException- Message:Error calling Create module
image-classifier-service: Could not create module image-classifier-service
        caused by: Could not pull image zzzzz.azurecr.io/image-classifier-service:1.1.5-arm32v7
        caused by: Get https://zzzzz.azurecr.io/v2/image-classifier-service/manifests/1.1.5-arm32v7: unauthorized: authentication required

尝试通过脚本运行拉取的镜像时:

代码语言:javascript
复制
sudo docker run --rm --name testName -it zzzz.azurecr.io/camera-capture-opencv:1.1.12-arm32v7

我得到了这个错误:

代码语言:javascript
复制
Camera Capture Azure IoT Edge Module. Press Ctrl-C to exit.
Error: Time:Fri May 24 10:01:09 2019 File:/usr/sdk/src/c/iothub_client/src/iothub_client_core_ll.c Func:retrieve_edge_environment_variabes Line:191 Environment IOTEDGE_AUTHSCHEME not set
Error: Time:Fri May 24 10:01:09 2019 File:/usr/sdk/src/c/iothub_client/src/iothub_client_core_ll.c Func:IoTHubClientCore_LL_CreateFromEnvironment Line:1572 retrieve_edge_environment_variabes failed
Error: Time:Fri May 24 10:01:09 2019 File:/usr/sdk/src/c/iothub_client/src/iothub_client_core.c Func:create_iothub_instance Line:941 Failure creating iothub handle
Unexpected error IoTHubClient.create_from_environment, IoTHubClientResult.ERROR from IoTHub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-29 00:59:56

当您使用docker run直接拉取图像时,它会拉取图像,但随后无法在edge运行时之外运行,这是意料之中的。但是当边缘代理试图拉取它时,它失败了,因为它没有被授权。未向运行时提供凭据,因此它尝试匿名访问注册表。

确保将容器注册中心凭据添加到部署中,以便边缘运行时可以拉取镜像。部署应该在运行时设置中包含类似以下内容:

代码语言:javascript
复制
"MyRegistry" :{
  "username": "<username>",
  "password": "<password>",
  "address": "<registry-name>.azurecr.io"
}

正如@ here在评论中指出的那样,文档是静默的,包括一个包含容器注册凭据的示例部署。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56290353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档