树莓派4 Docker部署Home Assistant出现No access to /dev/mem报错求解
你遇到的报错核心原因是Docker容器内的Home Assistant运行用户没有访问/dev/mem、/dev/gpiomem设备的权限,你当前的Docker配置存在两处错误:一是将容器特权参数错误写入了HA启动命令command字段,二是对GPIO设备做了重复挂载,同时没有配置容器内用户的访问权限。
可行解决步骤
- 方案一:直接以root用户运行容器(操作最简单,稳定性最高)
修正你的Docker配置(以docker-compose.yml为例),删除错误的command: ["--privileged"]、以及volumes下重复的/dev/mem、/dev/gpiomem挂载,参考配置如下:
配置修改完成后执行命令重建容器:version: '3' services: homeassistant: container_name: homeassistant image: homeassistant/raspberrypi4-homeassistant:stable restart: unless-stopped privileged: true user: root devices: - /dev/mem:/dev/mem - /dev/gpiomem:/dev/gpiomem volumes: - /home/pi/homeassistant:/config - /etc/localtime:/etc/localtime:rodocker-compose up -d --force-recreate - 方案二:不使用root用户运行,映射GPIO用户组权限
如果你不愿意以root权限运行容器,可以通过映射宿主机gpio用户组GID的方式授权:- 在树莓派宿主机执行命令查询gpio用户组的GID:
树莓派默认输出为getent group gpio | cut -d: -f3997 - 在Docker配置中补充
group_add参数,删除user: root配置,示例:group_add: - 997 - 同样执行重建容器命令生效
- 在树莓派宿主机执行命令查询gpio用户组的GID:
- 验证配置
容器启动完成后,执行命令进入容器内部验证权限:
确认设备文件存在且对运行用户有读写权限即可。docker exec -it homeassistant bash ls -l /dev/*mem
内容的提问来源于stack exchange,提问作者Kamil
相关产品推荐
相关产品推荐

