担心 openclaw 把本地文件改了?把它运行在容器中最适合不过了,这样即使它把根目录删了,也只是删除了容器的。
下面在一台安装了 docker 和 docker compose 的 linux 主机上把 openclaw 部署在容器内。
下载 openclaw 镜像
从网址 https://hub.docker.com/r/alpine/openclaw/tags 可查到最新的 openclaw 镜像

$ docker images | grep openclawEmulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.docker.io/alpine/openclaw main 6dc4c2dc6c25 36 hours ago 3.16 GB
安装 openclaw
github 项目 openclaw-in-docker 开发了脚本用于一键部署 openclaw 容器,我们下载此项目。
$ git clone https://github.com/ozbillwang/openclaw-in-docker.git$ cd openclaw-in-docker$ ls -latotal 36drwxrwxr-x 3 admin admin 4096 Mar 28 11:52 .drwx------ 10 admin admin 4096 Mar 28 11:52 ..-rw-rw-r-- 1 admin admin 1399 Mar 28 11:52 docker-compose.yml-rwxrwxr-x 1 admin admin 6318 Mar 28 11:52 docker-setup.sh-rw-rw-r-- 1 admin admin 2663 Mar 28 11:52 .env.exampledrwxrwxr-x 8 admin admin 4096 Mar 28 11:52 .git-rw-rw-r-- 1 admin admin 5 Mar 28 11:52 .gitignore-rw-rw-r-- 1 admin admin 1740 Mar 28 11:52 README.md
$ export OPENCLAW_IMAGE="alpine/openclaw:main"$ export OPENCLAW_GATEWAY_PORT=55930$ export OPENCLAW_BRIDGE_PORT=55931$ bash docker-setup.sh
部署过程中最重要的是设置大模型 api key, 笔者选择的是 MinMax。其他配置若没有准备好可以跳过。
◆ Model/auth provider。。。省略其他信息。。。│ ○ LiteLLM│ ○ Microsoft Foundry│ ● MiniMax (M2.7 (recommended))。。。省略其他信息。。。◆ MiniMax auth method│ ● MiniMax API key (CN) (CN endpoint - api.minimaxi.com)│ ○ MiniMax API key (Global)│ ○ MiniMax OAuth (CN)│ ○ MiniMax OAuth (Global)│ ○ Back◆ Enter MiniMax CN API key (sk-api- or sk-cp-)https://platform.minimaxi.com/user-center/basic-information/interface-key│ _xxxxx换成你买的apixxxxx└。。。省略其他信息。。。
安装完毕后如下所示,此部署只是把本机的 /home/admin/.openclaw
目录挂载到容器内,即 openclaw 最多只操作主机的此目录,可以通过网页端放心正常访问 openclaw 了。
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES76fa561de403 alpine/openclaw:main "docker-entrypoint.s…" 6 days ago Up 5 days (healthy) 0.0.0.0:55930->18789/tcp, :::55930->18789/tcp, 0.0.0.0:55931->18790/tcp, :::55931->18790/tcp openclaw-in-docker-openclaw-gateway-1$ docker inspect openclaw-in-docker-openclaw-gateway-1。。。省略其他信息。。。"HostConfig": {"Binds": ["/home/admin/.openclaw:/home/node/.openclaw:rw","/home/admin/.openclaw/workspace:/home/node/.openclaw/workspace:rw"],。。。省略其他信息。。。
安装python包技巧
openclaw 容器权限做的很绝,如下所示容器运行用户是 node,且没有 root 权限!安装软件咋办?让 openclaw 自己解决,或给它点提示。
$ docker exec -it openclaw-in-docker-openclaw-gateway-1 bashnode@76fa561de403:/app$ whoaminodenode@76fa561de403:/app$ sudo subash: sudo: command not found
这里举例说明 python 包如何安装。若你的 openclaw 自己在容器内没找到安装方法时,可以参考下面给它个例子即可,之后它就都懂了。
$ curl -sSL https://bootstrap.pypa.io/get-pip.py-o get-pip.py$ export PATH="$HOME/.local/bin:$PATH"$ python3 get-pip.py --user --break-system-packages$ pip install --user --break-system-packages requests
--user:把 pip(和它的依赖,如 setuptools、wheel)安装到你的用户目录,无需 root。对于 openclaw 容器安装目录是 /home/node/.local
--break-system-packages:告诉 pip 忽略“外部管理环境”的保护,否则会报下面的错误。
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
夜雨聆风