Docker映像在IoT Edge容器创建选项中看不到Privileged设置为True的GPIO引脚

时间:2019-05-29 20:00:52

标签: docker raspberry-pi iot azure-iot-edge

我正在设置运行带有IoT Edge的Raspbian Stretch的Raspberry Pi 3b +。这需要模块的Docker映像和容器。我正在尝试获取一个模块,以从GPIO引脚获取传感器数据并将其发送到另一个模块。当我尝试使用GPIO信息应为/sys/class/gpio/export的目录时,我发现它不存在。似乎是因为docker没有将privileged设置为true,但是由于我是通过IoT Edge进行的,因此无法通过CLI输入。 根据这篇文章https://thenewstack.io/tutorial-connect-and-configure-raspberry-pi-as-an-azure-iot-edge-device/,我需要输入

{
  "HostConfig": {
    "Privileged": true
  }
}

在创建选项下,这是通过将其放入部署清单并发布来完成的。我仍然收到此错误: /bin/chgrp: cannot access '/sys/class/gpio/export': No such file or directory。我曾尝试通过授予docker容器USER sudo来提升特权,但是我相信这是因为docker容器并未真正使用特权设置运行。这是让我相信的帖子:Docker Access to Raspberry Pi GPIO Pins,这意味着它就像使用特权运行docker一样简单。

我尝试将创建选项设置为特权。这是我在Azure门户上的IoT Edge模块详细信息页面的快照: https://i.imgur.com/0Z4epYZ.png

我也放了     {       “ HostConfig”:{         “特权”:true       }     } CreateOptionsdeployment.template.json字段内

这是我的dockerfile:

    FROM arm32v7/node:8-slim

    WORKDIR /app/

    COPY package*.json ./

    RUN apt-get update

    RUN apt-get -y install sudo

    RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo

    RUN apt-get install -y python

    RUN apt-get install -y build-essential

    RUN npm install --production

    COPY app.js ./

    RUN sudo groupadd gpio
    RUN sudo usermod -aG gpio docker
    RUN su docker
    RUN sudo chgrp gpio /sys/class/gpio/export
    RUN sudo chgrp gpio /sys/class/gpio/unexport
    RUN sudo chmod 775 /sys/class/gpio/export
    RUN sudo chmod 775 /sys/class/gpio/unexport

    USER docker

    CMD ["node", "app.js"]

注意:这一切都在Visual Studio Code中。一切就绪后,请右键单击我的deployment.template.json,然后单击Build IoT Solution。然后,右键单击Azure IoT Hub Devices下拉菜单中的Edge设备,然后选择Create Deployment for Single Device,然后选择deployment.arm32v7.json下的./moduleName/config

我希望/sys/class/gpio/export目录在RPi中也确实存在于容器中。 实际发生的是我收到此错误: /bin/chgrp: cannot access '/sys/class/gpio/export': No such file or directory The command '/bin/sh -c sudo chgrp gpio /sys/class/gpio/export' returned a non-zero code: 1

非常感谢您提供任何见解或帮助。

0 个答案:

没有答案