【发布时间】:2016-09-27 19:47:15
【问题描述】:
我在覆盆子上使用 Docker。我想以用户(而不是 root)身份从容器访问 GPIO 线。
树莓派运行 raspbian 8.0。
看主机上/sys/class的内容:
pi@raspberrypi:~ $ ls -al /sys/class/
total 0
[...]
drwxrwx--- 2 root gpio 0 Sep 27 19:05 gpio
[...]
该文件夹属于 gpio 组。
当我以这种方式启动容器时:
docker run -it --privileged container-name bash
用户无法访问gpio文件夹:
root@f66a9f1cca91:/# su user
user@f66a9f1cca91:/$ ls /sys/class/gpio/
ls: cannot open directory /sys/class/gpio/: Permission denied
即使用户是 gpio 组的一部分,因为我在 Dockerfile 中创建了该组并将其分配给我的用户:
user@f66a9f1cca91:/$ groups user
user : user gpio fuse
这是因为,由于某种原因,gpio 组丢失了:
root@f66a9f1cca91:/# ls -al /sys/class/
total 0
[...]
drwxrwx--- 2 root 997 0 Sep 27 19:05 gpio
[...]
如何让容器识别组?
作为一种解决方法,我可以更改 /etc/group 以便 gpio 组匹配正确的 UID。问题是 gpio 组的 UID 可能会在我下次在树莓上安装 raspbian 时更改。
有什么方法可以动态创建 gpio 组或在 Dockerfile 中检索主机 gpio GID 吗?
【问题讨论】:
标签: unix docker filesystems