我有一个树莓派,并且在其中安装了 docker。我制作了一个 python 脚本来读取其中的 gpio 状态。所以当我运行下面的命令时
sudo docker run -it --device /dev/gpiomem app-image
它运行完美并显示 gpio 状态。现在我创建了一个
docker-compose.yml
文件,因为我想部署这个 app.py
到我创建的 swarm 集群。以下是
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
部署时的文件.?如何解决这个问题。?谢谢
最佳答案
群模式不支持添加设备、功能和使用特权模式。 yml 文件中的这些选项用于使用 docker-compose
而不是 docker stack deploy
.您可以在 github issue #24862 中跟踪将这些功能添加到群模式的进度。 .
由于您需要做的就是访问设备,因此您可能很幸运地将设备的文件添加为卷,但这是黑暗中的一个镜头:
volumes:
- /dev/gpiomem:/dev/gpiomem
关于Docker 错误 : No access to/dev/mem. 尝试以 root 身份运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48441737/