在macOS使用Podman搭建Selenoid遇套接字权限问题求助
问题复现
连接套接字时触发权限错误:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.12/containers/create": dial unix /var/run/docker.sock: connect: permission denied
Podman版本信息:
Client: Podman Engine Version: 4.2.0 API Version: 4.2.0 Go Version: go1.18.5 OS/Arch: darwin/amd64 Server: Podman Engine Version: 4.2.0 API Version: 4.2.0 Go Version: go1.18.4 OS/Arch: linux/amd64
Podman机器已完成API转发至/var/run/docker.sock,可正常通过Podman命令启动容器,但创建Selenoid driver时出现权限问题。
解决建议
1. 检查并调整套接字文件权限
先查看/var/run/docker.sock的权限详情:
ls -l /var/run/docker.sock
若输出显示文件归属为root:wheel且当前用户无读写权限,可临时调整权限(重启Podman机器后会重置):
sudo chmod 666 /var/run/docker.sock
如需持久化解决,将当前用户加入wheel组:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
执行后重启终端或重新登录系统生效。
2. 确认Podman默认连接配置
检查当前默认连接是否为root权限的连接:
podman system connection list
若默认连接不是podman-machine-default-root,切换为该连接:
podman system connection default podman-machine-default-root
随后重启Podman机器:
podman machine stop && podman machine start
3. 手动指定DOCKER_HOST环境变量
部分工具可能无法自动识别Podman的API转发地址,手动设置环境变量:
export DOCKER_HOST=unix:///var/run/docker.sock
启动Selenoid时也可直接指定参数:
selenoid --docker-host unix:///var/run/docker.sock
4. 重新初始化Podman机器
若上述方法无效,尝试重置Podman机器:
podman machine stop podman machine rm podman-machine-default podman machine init podman machine start
重启后再次检查套接字权限及连接配置。
5. 检查Selenoid配置文件
确认Selenoid的browsers.json或启动参数中,是否指定了正确的Docker主机地址。若配置了自定义--docker-host,确保指向/var/run/docker.sock。
内容的提问来源于stack exchange,提问作者LeonLee

