Docker 部署 OpenClaw 注意事项
Docker部署小龙虾时踩了不少坑,留下笔记警示后人。
教程参考这篇知乎专栏,写的很详细,可以少走不少弯路,不过仍然有些需要注意的地方。
权限问题
root用户部署
如果你是用root用户跑的 ./docker-setup.sh,那么 openclaw 的配置文件存放在 /root/.openclaw,且可能会出现以下报错:
1 | Error: EACCES: permission denied, open '/home/node/.openclaw/openclaw.json.7.2ede223b-aa90-4aa5-8f0d-97049696b626.tmp |
这是因为 /root/.openclaw 的所有者是 root,openclaw 没有权限访问这个文件夹。
解决方法是执行 chown -R 1000:1000 "$HOME/.openclaw",把 .openclaw 文件夹及其内部所有东西的所有权,交给 ID 为 1000 的用户和组。
然后重新执行一遍 ./docker-setup.sh 就解决了。
普通用户部署
假设用户为 McGuffin,那么 openclaw 的配置文件存放在 /home/McGuffin/.openclaw,且可能会出现以下报错:
1 | permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.51/networks?filters=%7B%22name%22%3A%7B%22openclaw-in-docker_default%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied |
说明当前的 SSH 用户没有权限访问 Docker 的守护进程。在 Linux 系统中,默认只有 root 用户或 docker 组的用户才能操作 Docker。
只需要把当前用户加入 docker 组就可以了。
1 | sudo groupadd docker # 创建 docker 用户组(如果不存在) |
openclaw: command not found
很多教程都会使用 openclaw 命令,但是由于我们是使用 docker 部署的,不能直接使用此命令,而是应该使用 docker compose run --rm openclaw-cli。
例如:
1 | # 原命令 |
不需要 docker exec 进入容器,直接在宿主机源码目录执行即可。