我有一个树莓派,并且在其中安装了docker。我制作了一个 python 脚本来读取其中的 gpio 状态。所以当我运行以下命令时
sudo docker run -it --device /dev/gpiomem app-image
它运行完美并显示 gpio 状态。现在我创建了一个docker-compose.yml
文件,因为我想部署这个app.py
到我创建的集群。
下面是内容docker-compose.yml
version: "3"
services:
app:
image: app-image
deploy:
mode: global
restart: always
privileged: true
当我使用开始部署时sudo docker stack deploy
命令,图像已部署但出现错误:
No access to /dev/mem. Try running as root
所以它说它无权访问/dev/mem
,但是当我使用时这很奇怪device
,为什么该服务无法访问。它还说尝试以 root 身份运行,我认为所有容器都已经在 root 中了。我还尝试通过包含命令来授予该文件的完全权限chmod 777 /dev/gpiomem
在代码中,但它仍然显示此错误。
我的主要问题是当它正常运行时使用docker run..
命令为什么显示错误docker-compose
部署时使用的文件sudo docker stack deploy
.?如何解决这个问题。?
Thanks
Swarm 模式不支持添加设备、功能和使用特权模式。 yml 文件中的这些选项可供使用docker-compose
代替docker stack deploy
。您可以跟踪将这些功能添加到群体模式的进度:github 问题 #24862.
由于您所需要做的就是访问设备,因此您可能会幸运地将设备的文件添加为卷,但这是一个盲目的尝试:
volumes:
- /dev/gpiomem:/dev/gpiomem
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)