OpenClaw Docker 容器化部署
·
一、什么是 Docker 方式部署 OpenClaw
OpenClaw 是开源 AI Agent 网关,提供工具调用、Checkpointer 会话持久化、多模型统一网关能力。 Docker 部署就是把 OpenClaw 连同 Node 运行环境打包进容器,做到环境隔离、一次配置到处运行。
- 官方镜像仓库:
ghcr.io/openclaw/openclaw:latest(GHCR 官方镜像,优先使用) - 对外网关端口:
18789 - 持久化目录:容器内
/home/node/.openclaw,存放openclaw.json配置、Checkpointer 会话快照、技能插件、工作区数据。
对比 WSL2/npm 全局部署:Docker 不需要宿主机安装 Node22,消除版本冲突;升级降级仅需要拉取镜像,配置数据通过卷挂载保留。
二、为什么选择 Docker 部署 OpenClaw
- 环境零污染:不需要宿主机安装 Node.js22,不会和本机其他 Node 项目版本冲突。
- 部署一致性:Windows (Docker Desktop)、WSL2、Linux 服务器、NAS,同一套 compose 配置直接运行。
- 数据持久化:卷挂载把配置、Checkpointer 会话快照存宿主机,容器删除重建数据不丢失openclaw-a...。
- 运维便捷:一键启停、版本升级简单;支持设置 CPU 内存资源限制,适合 VPS 服务器上线。
- 网络灵活:容器网络可以对接宿主机 Ollama 服务,也可以直接调用云端大模型 API。
注意坑:容器内部用户 uid=1000,挂载目录会出现权限拒绝 EACCES,需要修改宿主机目录属主,这是 docker 部署高频问题GitHub。
三、适合与不适合场景
适合场景
- VPS 云服务器部署 OpenClaw 对外提供 Agent 网关服务;
- Windows/macOS 不想在本机安装 Node22 环境;
- 需要多套 OpenClaw 实例隔离运行;
- NAS 容器平台部署;
- 项目工程化,CI/CD 流水线。
不适合场景
- 需要高频执行本地系统命令、访问宿主机大量本地文件;
- 网络环境很差,无法拉取 ghcr 镜像。
四、Docker Compose 部署步骤
前置条件
- 已安装 Docker + Docker Compose
- 网络可以访问 ghcr.io 镜像仓库;
- 创建本地存放 OpenClaw 配置目录,例如
./openclaw_data,用于挂载容器.openclaw目录。
步骤 1:编写 docker‑compose.yml
version: "3.8"
services:
openclaw-gateway:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "18789:18789"
environment:
- NODE_ENV=production
- HOME=/home/node
volumes:
# 持久化配置、checkpointer会话快照、工作区
- ./openclaw_data:/home/node/.openclaw
# 资源限制,服务器环境建议配置
deploy:
resources:
limits:
cpus: "2"
memory: 2G
healthcheck:
test: ["CMD","curl","-f","http://127.0.0.1:18789/health"]
interval:30s
timeout:10s
retries:3
步骤 2:处理目录权限(非常关键,防止 EACCES 报错)
容器内部运行用户 uid=1000,宿主机目录权限不匹配会报权限拒绝,无法写入 openclaw.json 和 Checkpointer
Linux/WSL2 执行:
mkdir -p ./openclaw_data
chown -R 1000:1000 ./openclaw_data
Windows Docker Desktop 一般不会出现权限报错,Linux 服务器必须执行上面命令。
步骤 3:执行初始化 onboard 向导
不要直接启动网关,先运行 cli 容器执行交互式初始化流程:
docker compose run --rm openclaw-gateway openclaw onboard --flow quickstart
交互式关键选项:
- 网关模式:
local(必须选 local,否则网关启动报错) - 模型提供商:可先跳过,后续修改
openclaw.json - 是否安装守护进程:
n(docker 环境不需要 systemd 守护)
初始化完成后,配置文件生成在宿主机./openclaw_data/openclaw.json。
步骤 4:修改 openclaw.json 配置文件
方案 A:对接阿里云百炼(国内云端模型)
编辑./openclaw_data/openclaw.json
{
"gateway": {
"mode": "local",
"port": 18789,
"host":"0.0.0.0"
},
"agents":{
"defaults":{
"model":"aliyun/qwen-plus",
"temperature":0.7
}
},
"models":{
"providers":{
"aliyun":{
"apiKey":"你的dashscope api‑key",
"baseUrl":"https://dashscope.aliyuncs.com/compatible-mode/v1",
"api":"openai‑completions",
"models":[
{
"id":"qwen‑plus",
"name":"qwen‑plus",
"contextWindow":128000
}
]
}
}
}
}
方案 B:容器访问宿主机 Ollama
docker 容器访问宿主机服务:
- Docker Desktop Windows/macOS:特殊 DNS
host.docker.internal - Linux 服务器:使用宿主机物理网卡 IP,不要使用 127.0.0.1
{
"gateway": {
"mode": "local",
"port": 18789,
"host":"0.0.0.0"
},
"agents":{
"defaults":{
"model":"ollama/qwen2.5:7b",
"temperature":0.7
}
},
"models":{
"providers":{
"ollama":{
"apiKey":"dummy",
"baseUrl":"http://host.docker.internal:11434/v1",
"api":"openai‑completions",
"models":[
{
"id":"qwen2.5:7b",
"name":"qwen2.5‑7b",
"contextWindow":32768
}
]
}
}
}
}
步骤 5:启动网关服务
#后台启动
docker compose up -d
#查看运行日志
docker compose logs -f openclaw-gateway
步骤 6:健康检查验证
curl http://127.0.0.1:18789/health
返回ok代表网关正常运行。浏览器访问http://127.0.0.1:18789打开控制面板。
常用运维命令
#进入容器执行openclaw命令
docker compose exec -it openclaw-gateway sh
#执行诊断工具
docker compose exec openclaw-gateway openclaw doctor --fix
#查看debug日志
docker compose exec openclaw-gateway openclaw logs --level debug
#版本升级
docker compose pull
docker compose up -d
#停止(数据保留在openclaw_data目录)
docker compose down更多推荐


所有评论(0)