Docker 错误 : No access to/dev/mem. 尝试以 root 身份运行

标签 docker docker-compose

我有一个树莓派,并且在其中安装了 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/

相关文章:

javascript - MEAN 堆栈 docker 容器在 OS X 和 DigitalOcean 上具有相同配置的最简单设置是什么?

docker - 无法在节点 docker 镜像中安装 npm

docker - 在 Windows 上连接到 docker 容器

docker - 在 docker-compose 中使用主机 ip

docker - 我可以在一个命令中使用 docker-compose 运行多个服务吗?

Docker 在 Windows 10 中没有默认机器

linux - docker中安装Alpine的启动命令是什么?

python-3.x - 无法在 docker 中安装 pyodbc 并收到错误命令 'gcc' 失败,退出状态 1

testing - docker-compose 与孤立的服务集一起运行?

docker - Netflix Conductor 服务器本地 docker 容器不健康