Docker 错误:无法访问 /dev/mem。尝试以 root 身份运行

Use*_*727 5 docker docker-compose

我有一个树莓派,并且在其中安装了docker。我制作了一个 python 脚本来读取其中的 gpio 状态。所以当我运行以下命令时

sudo docker run -it --device /dev/gpiomem app-image
Run Code Online (Sandbox Code Playgroud)

它运行完美并显示 gpio 状态。现在我已经创建了一个docker-compose.yml文件,因为我想部署它app.py到我创建的 swarm 集群中。

下面是内容docker-compose.yml

version: "3"
services:
    app:
        image: app-image
        deploy:
            mode: global
        restart: always
        privileged: true
Run Code Online (Sandbox Code Playgroud)

当我使用命令开始部署时sudo docker stack deploy,映像已部署,但出现错误:

No access to /dev/mem. Try running as root
Run Code Online (Sandbox Code Playgroud)

所以它说它没有访问权限/dev/mem,但是当我使用时这很奇怪device,为什么该服务没有访问权限。它还说尝试以 root 身份运行,我认为所有容器都已经在 root 中了。我还尝试通过包含命令来授予该文件的完全权限chmod 777 /dev/gpiomem我还尝试通过在代码中

我的主要问题是,当它使用命令正常运行时,为什么在使用 . 部署时在文件docker run..中显示错误?如何解决这个问题。?docker-composesudo docker stack deploy

谢谢

yam*_*enk 1

如docker-compose devices中所述

注意:当使用(版本 3)Compose 文件以 swarm 模式部署堆栈时,此选项将被忽略。

devices 选项在 swarm 中被忽略。您可以使用privileged: true它将访问所有设备。