折腾了好几天,终于把 OpenClaw 用 Docker 跑通了。期间踩的坑足够写一篇长文:Windows 桌面版的虚拟化检测、Linux 服务器上的镜像加速、容器起来之后 Control UI 不自动启动、模型名写错导致 Agent 直接不回复……每个问题单独拎出来都够劝退一批人。这篇文章把完整过程整理出来,包括环境准备、容器启动、模型接入、高频报错排查,以及接入钉钉/微信、配多模型和长期记忆这类进阶玩法,给想用 Docker 部署 OpenClaw 的朋友一条能直接照着走的路径。
1. 为什么 OpenClaw 用 Docker 跑比裸装更划算
我最早是在本机直接装 OpenClaw 的,结果装了三次,三次都因为环境依赖问题半途而废。这个框架对运行时的要求比普通 Node 项目更复杂,启动 Agent 需要拉起 Python 子进程做 Skill 调用、用 Node 运行时跑交互主进程,还有一堆 npm 原生模块要编译。裸装方式下,只要本机之前装过其他 AI 项目,Python 版本、Node 版本、各种 .dll/.so 链接库就很容易打架。
1.1 裸装 OpenClaw 容易翻车的几个点
- 依赖冲突:OpenClaw 依赖的某个库版本和你本机已有的版本冲突,装到一半报错,解决完一个又冒出来一个。
- Node 运行时找不到:就像常见报错
oneclaw node runtime not found,明明装了 Node,但框架找不到,本质就是环境变量和安装路径没对上。 - 卸载不干净:想删掉重装时,目录还被进程锁着,Windows 上经常报
EBUSY: resource busy or locked,删个文件夹都费劲。 - 换机器重来一遍:本机调好的一套配置,搬到另一台电脑就要重新装、重新配、重新踩坑。
1.2 Docker 带来的本质改变
Docker 的核心价值不是“把文件打进镜像”,而是把运行时环境和宿主机隔离。OpenClaw 需要 Python 就给它 Python,需要 Node 就给它 Node,这些依赖只存在于容器内部,不污染宿主机,也不会被宿主机上其他项目干扰。
容器还天然解决了可移植性问题。我在 Windows 开发机上把镜像跑通之后,把同一个镜像扔到云服务器上,容器一起来,效果完全一致。包括环境变量、数据目录、Skill 文件,全部通过挂载和配置管理,换机器成本几乎为零。
1.3 我实际对比过的三种部署方式
| 部署方式 | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| 本机裸装 | 启动最快,调试直观 | 依赖容易冲突,换机成本高 | 只想体验几分钟 |
| Docker Desktop | 环境隔离,安装相对简单 | 占用磁盘空间大,Windows 需要 WSL2 | 日常开发和调试 |
| 云服务器 Docker | 7×24 运行,可接入消息平台 | 内存/显存有限,需要公网配置 | 长期跑 Agent 服务 |
如果你只是好奇 OpenClaw 是什么,裸装试一下没问题。但如果你想长期维护、接消息平台、做二次开发,建议直接上 Docker。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Docker 环境准备:桌面版和服务器版各有各的坑
说句实话,OpenClaw 本身的配置不算难,真正卡住大部分人的,是 Docker 环境本身。尤其是 Windows 用户,很多人第一步就卡在 Docker Desktop 启动失败上。
2.1 Windows 上安装 Docker Desktop 的完整流程
下载 Docker Desktop 安装包后,安装向导会提示是否使用 WSL2 作为后端。这里建议直接选 WSL2,性能和兼容性都优于旧版 Hyper-V 方案。
安装完成后,最常见的问题就是启动报错:Docker Desktop failed to start because virtualisation support wasn't detected。
这个报错不代表 Docker 坏了,而是你的系统没有开启虚拟化支持。排查路径如下:
- 打开任务管理器 -> 性能 -> CPU,看右下角“虚拟化”是否显示“已启用”。
- 如果显示“已禁用”,需要进主板 BIOS 开启 Intel VT-x 或 AMD-V。不同主板入口不一样,一般开机按 F2 / Del 进入,在 Advanced -> CPU Configuration 里找。
- 在 Windows 功能里勾选“适用于 Linux 的 Windows 子系统”和“虚拟机平台”,然后重启。
- 确认 WSL2 已启用:管理员 PowerShell 执行
wsl --status,如果没安装内核,按提示wsl --update。
还有一个常见问题是 Windows 版本过旧,会提示 `we've detected that you have an incompa
