Docker 访问 Raspberry Pi GPIO 引脚 --privileged 不起作用

Docker Access to Raspberry Pi GPIO Pins --privileged does not work

我知道类似的问题had already been answered,我也在努力学习。 我相信,我已经尝试了几乎所有可能的组合,但都没有成功:

sudo docker run --device /dev/ttyAMA0:/dev/ttyAMA0 --device /dev/mem:/dev/mem --device /dev/gpiomem:/dev/gpiomem --privileged my_image_name /bin/bash

我也参考了 the docker manual 并尝试了 --cap-add=SYS_ADMIN

sudo docker run --cap-add=SYS_ADMIN --device /dev/ttyAMA0:/dev/ttyAMA0 --device /dev/mem:/dev/mem --device /dev/gpiomem:/dev/gpiomem --privileged my_image_name /bin/bash

我还尝试了与卷的组合:-v /sys:/sys

但由于权限被拒绝,我仍然无法访问设备:

我已经检查了可能需要的那些设备是否存在并且我可以读取它们:

我浪费了。我还做错了什么?是不是我必须 运行 我的应用程序在容器内作为 root ?世界上怎么样? :D

您在容器中以 appuser 身份执行 运行 命令,而设备文件由 root 拥有,具有各种组权限且没有全局访问权限(crw-rw---crw-r-----)。这些组可能会被忽略,因为容器内的 /etc/groups 与主机不匹配,传递给容器的是 uid/gid,而不是 user/group 名称。该应用程序本身似乎期望您是 运行 root 用户,甚至建议您执行 sudo。该 sudo 不在 docker 命令本身上(尽管如果主机上的用户不是 docker 组的成员,您可能需要它)但在容器内启动的进程上:

docker run --user root --privileged my_image_name /bin/bash

意识到这是非常不安全的,因此请确保您信任容器内的进程,就好像它是容器外主机上的 运行 root 用户一样,因为它具有所有相同的访问权限。