无法访问docker容器中的/dev/mem

问题描述 投票:0回答:1

我正在尝试读取运行 Linux 的 Zynq 上的内存映射寄存器。我正在使用 python,但我很确定我的问题与系统相关。在 docker 之外,我可以打开 /dev/mem 并 mmap 适当的段,但是当我尝试使用 docker-compose 访问它时,我遇到了权限问题。 我已将容器用户添加到 kmem 中,并尝试以 root 身份运行容器。 我在有或没有特权的情况下运行过:true 我使用了卷和设备挂载(卷:“/dev/mem:/dev/mem”和设备:“/dev/mem”),

我使用 O_RDONLY|O_SYNC 打开 /dev/mem 和 MAP_SHARED、PROT_READ 来映射它,但我总是被拒绝权限。即使 dd if=/dev/mem skip=0x80100000 count=16 也会出现权限问题。 我以 root 身份运行 Containerd。

我一定缺少一些权限问题,有什么想法吗?

linux embedded-linux zynq
1个回答
0
投票

看这个:Docker 访问 Raspberry Pi GPIO 引脚 访问 /dev/mem 与访问 gpio sysfs 相同:

  1. 使用“--privileged”选项运行 Docker 像这样启动容器将使容器能够完全访问主机的设备,包括 /dev/mem:

$ docker run --privileged -d 随便 检查有关此选项的 Docker 文档。它可能不是最佳选择,具体取决于您的安全要求有多严格。

  1. 仅通过“--device”选项将 /dev/mem 设备分配给 docker 您可以具体地只在运行时将 /dev/mem 设备暴露给容器,而不是将所有主机设备暴露给容器。

$ docker run --device /dev/mem -d 随便

© www.soinside.com 2019 - 2024. All rights reserved.