【OpenClaw】OpenClaw + Docker + vLLM 配置报错:Permission denied
OpenClaw + Docker + vLLM 配置时报错:EACCES permission denied, mkdir ‘/home/node/.openclaw/…’
现象(我遇到的报错)
在 OpenClaw 的配置界面选择:
- Model/auth provider:
vLLM - vLLM base URL:
http://127.0.0.1:8001/v1 - vLLM API key:
vllm-local - vLLM model:
Qwen/Qwen3-32B
确认后报错:
Error: EACCES: permission denied, mkdir '/home/node/.openclaw/agents/main/agent'
同时确认 vLLM 服务是正常的,例如:
curl http://127.0.0.1:8001/v1/models
能返回 Qwen/Qwen3-32B。
结论:vLLM 没问题,OpenClaw 报错与模型无关,是容器挂载目录权限问题。
根因分析
OpenClaw 的 Docker 部署会把宿主机目录 bind mount 到容器内,例如:
volumes:
- type: bind
source: /home/chaobo/.openclaw
target: /home/node/.openclaw
bind:
create_host_path: true
容器里运行 OpenClaw 的用户是 node(不是 root),通常是:
uid=1000(node)gid=1000(node)
但宿主机目录 /home/chaobo/.openclaw 的属主/属组可能是:
uid=1005(chaobo)gid=999(docker)- 权限
775
当 bind mount 进容器后,容器内看到的目录仍然是 uid=1005 gid=999 mode=775。
此时容器用户是 1000:1000,既不是 owner,也不在 group(数值不匹配),所以只有 “other” 权限(r-x),没有写权限,于是 OpenClaw 想创建目录就会失败:
mkdir /home/node/.openclaw/agents/main/agent -> EACCES
一句话总结:
容器里运行用户的 UID/GID 与宿主机挂载目录的 UID/GID 不一致,导致容器内无写权限。
如何快速确认(定位方法)
1)确认 compose 的挂载路径
docker compose config | sed -n '/openclaw-gateway:/,/^[^ ]/p' | sed -n '/volumes:/,/^[^ ]/p'
确保 source 是你期望的路径,比如 /home/chaobo/.openclaw。
2)在容器里看用户和挂载目录的 UID/GID
docker compose exec openclaw-gateway sh -lc '
id
stat -c "uid=%u gid=%g mode=%a path=%n" /home/node/.openclaw
touch /home/node/.openclaw/.wtest && echo OK || echo FAIL
'
如果 touch 失败并显示 Permission denied,基本就是权限问题。
解决方案(我最终有效)
把宿主机挂载目录的属主改成容器内 node 用户的 UID/GID(这里是 1000:1000),并确保可写:
sudo chown -R 1000:1000 /home/chaobo/.openclaw
sudo chmod -R u+rwX /home/chaobo/.openclaw
然后重启 OpenClaw:
docker compose up -d openclaw-gateway
再做一次写测试:
docker compose exec openclaw-gateway sh -lc 'touch /home/node/.openclaw/.wtest && echo OK'
看到 OK 后,回到 OpenClaw UI 继续配置 vLLM,就不会再报 EACCES 了。
为什么目录明明是 775 还会写不了?
关键点是:Linux 权限是按 数字 UID/GID 判定的,不看用户名字符串。
宿主机目录是:
- owner:
uid=1005 - group:
gid=999 - mode:
775
容器内进程是:
uid=1000gid=1000
它既不属于 owner,也不属于 group,于是只能用 other 权限(5),没有写权限。
额外经验:不要用 sudo 运行 docker-setup(避免绑到 /root)
一开始我遇到过 docker 不用 sudo 会 permission denied,于是用 sudo docker compose ... 运行。
但 sudo 会把 $HOME 变成 /root,导致 OpenClaw 的 bind mount 可能变成:
/root/.openclaw -> /home/node/.openclaw
这会引入更多权限和路径混乱问题。
更推荐先把用户加入 docker 组,之后用普通用户执行 docker 命令:
sudo usermod -aG docker chaobo
newgrp docker
docker ps
总结
- vLLM 可用不代表 OpenClaw 配置就没问题;这里的报错本质是 容器挂载目录权限/UID 不一致。
- 最有效的修复是:让宿主机
.openclaw目录属主与容器内运行用户一致(通常1000:1000)。 - 修复命令:
sudo chown -R 1000:1000 /home/chaobo/.openclaw
sudo chmod -R u+rwX /home/chaobo/.openclaw
之后 OpenClaw 就能正常创建 agents/main/agent 目录,配置流程可以继续。
更多推荐



所有评论(0)