【Docker Run方式快速部署龙虾OpenClaw实录(linux-ubuntu+deepseek)】
openclaw的版本迭代很快,在宿主机系统直接部署方式升级一旦出现问题不好处理,采用docker方式部署易于快速部署新版本和维护。一、简介官方脚本式Docker部署方法。
转载自:https://mp.weixin.qq.com/s/I3dUhKyDWPhn0Kg4R1Oa2A
前言
openclaw的版本迭代很快,在宿主机系统直接部署方式升级一旦出现问题不好处理,采用docker方式部署易于快速部署新版本和维护。
一、简介官方脚本式Docker部署方法
1.1 git拉取代码仓库
git clone https://github.com/openclaw/openclaw
1.2 进入源码根目录,执行安装脚本:
cd openclaw
./docker-setup.sh
以上是官方的docker安装方式,本文记录的是不采用上述官方脚本方式部署docker版的openclaw,而是直接拉取官方的openclaw镜像文件,然后用docker run命令的方式部署openclaw,这个过程可以更细化了解openclawdocker镜像运行方式和维护经验,为进一步编写docker-compose打下基础。
二、Docker run方式直接拉取镜像部署Openclaw
2.1 镜像文件分为:Docker slim版本与完整版
OpenClaw 的 Docker slim 版本与非 slim(标准/full)版本的主要区别体现在镜像体积、启动速度、依赖包含范围和适用场景等方面。根据最新公开资料(截至 2026 年 4 月),具体对比如下:
核心区别
冷启动耗时
slim 版本:平均 3.2 秒
非 slim 版本:未明确给出,但通常因体积更大而启动稍慢
包含内容
slim 版本:
剥离了构建工具、调试工具、文档等非运行时依赖
仅保留最小化 Python 运行时与必要 .so 库
支持通过环境变量(如 OPENCLAW_EXTENSIONS=telegram,feishu)预装插件,实现按需扩展
非 slim 版本:
包含完整功能集,适合开发、测试或企业级部署
可能内置更多调试工具和示例配置
适用场景
slim 版本:
资源受限环境(如 NAS、树莓派、边缘设备)
需要快速部署、低内存占用的生产或长期运行场景
非 slim 版本:
开发调试、本地测试、需要完整功能的环境
对启动速度要求不高但需完整工具链的场景
2.2 拉取镜像
1、拉取最新版本镜像
拉取opencaw官方完整镜像
docker pull ghcr.io/openclaw/openclaw:latest
拉取openclaw官方指定版本完整镜像如2026.4.11
docker pull ghcr.io/openclaw/openclaw:2026.4.11

拉取openclaw官方指定版本slim镜像如2026.4.12-slim
docker pull ghcr.io/openclaw/openclaw:2026.4.12-slim

下载镜像后校验完整和文件尺寸
docker images
docker images --digests 镜像名或ID

2.3 准备本地映射目录
1、先用最简单的docker run命令让openclaw容器跑起来,以便明确要映射到本地磁盘的路径
docker run -d --name openclaw ghcr.io/openclaw/openclaw:2026.4.12
docker ps

进入容器确定要映射的目录(一般是openclaw的主目录就是配置文件openclaw.json所在的目录,也可以包括滚动log所在目录)
docker exec -it openclaw bash
node@b650f610bfcb:/app$ pwd
/app
node@b650f610bfcb:/app$ ls
dist docs extensions node_modules openclaw.mjs package.json qa skills
node@b650f610bfcb:/app$ cd ~
node@b650f610bfcb:~$ pwd
/home/node
node@b650f610bfcb:~$ ls -a
. .. .bash_logout .bashrc .codex .npm .openclaw .profile
node@b650f610bfcb:~$ cd .openclaw/
node@b650f610bfcb:~/.openclaw$ ls -a
. .. canvas identity logs openclaw.json openclaw.json.bak tasks update-check.json workspace
node@b650f610bfcb:~/.openclaw$ cd /tmp/
node@b650f610bfcb:/tmp$ ls
jiti node-compile-cache openclaw openclaw-1000
node@b650f610bfcb:/tmp$ cd openclaw
node@b650f610bfcb:/tmp/openclaw$ ls
openclaw-2026-04-16.log
并且注意到默认进入容器的用户名称是node,查询其id明确权限,后面创建的映射目录需要相应授权,可见node是uid=1000的普通用户。
node@b650f610bfcb:/tmp/openclaw$ id
uid=1000(node) gid=1000(node) groups=1000(node)
1、在docker所在宿主机上准备映射容器openclaw主目录的本地目录
mkdir -p /openclaw-work/openclaw_home/
sudo chown -R 1000:1000 /openclaw-work/openclaw_home/
mkdir -p /openclaw-work/openclaw_rollinglog
sudo chown -R 1000:1000 /openclaw-work/openclaw_rollinglog/
本地目录与映射的容器目录对应关系如下:
本地的/openclaw-work/openclaw_home/映射到:容器的/home/node/.openclaw
本地的/openclaw-work/openclaw_rollinglog映射到:容器的/tmp/openclaw
确保本地(docker宿主机)目录的属主为 1000:1000(即容器内的 node 用户)
小窍门:
为什么不映射/home/node/整个目录 ,而细化映射到/home/node/.openclaw,因为后面docker run -v /openclaw-work/openclaw_home/:/home/node/会报错,目前认为最大可能是与镜像里的Entry-point启动脚本里的路径存在冲突。
2.4 docker run启动容器:初始化
初始化是指:让容器运行起来后产生openclaw.json文件映射到本地目录(注意一定要有-rm参数,这样setup产生文件后容器自动退出清除),这样以后不用docker exec -it 到容器里修改,而是可以直接修改本地路径的openclaw.json。
docker run --rm -v /openclaw-work/openclaw_home/:/home/node/.openclaw ghcr.io/openclaw/openclaw:2026.4.12 openclaw setup
返回结果:
Wrote ~/.openclaw/openclaw.json
Workspace OK: ~/.openclaw/workspace
Sessions OK: ~/.openclaw/agents/main/sessions
进入本地目录查看,确认容器包含openclaw.json的主目录和滚动日志目录映射成功:
root@minio-docker:/# cd /openclaw-work/
root@minio-docker:/openclaw-work# ls
openclaw_home openclaw_rollinglog
root@minio-docker:/openclaw-work# cd openclaw_home/
root@minio-docker:/openclaw-work/openclaw_home# ls
agents logs openclaw.json workspace
root@minio-docker:/openclaw-work/openclaw_home# cat openclaw.json
{
"agents": {
"defaults": {
"workspace": "/home/node/.openclaw/workspace"
}
},
"gateway": {
"mode": "local"
},
"meta": {
"lastTouchedVersion": "2026.4.12",
"lastTouchedAt": "2026-04-17T03:55:02.883Z"
}
}
可见openclaw自带的初始化openclaw.json配置很简化。另外镜像滚动日志还没产生,需要后继容器正式运行才能生成。
2.5 容器启动openclaw网关:正式运行
docker run -d --restart=unless-stopped --name openclaw -p 18789:18789 -v /openclaw-work/openclaw_home/:/home/node/.openclaw -v /openclaw-work/openclaw_rollinglog:/tmp/openclaw ghcr.io/openclaw/openclaw:2026.4.12
**只映射openclaw主目录(含配置文件openclaw.json、workspace等)到本地磁盘
**如忘了参数如--restart=always(任何情况都拉起容器确保容器始终运行)、--restart=unless-stopped(除非手动停止容器否则任何情况都拉起容器),从其可以用docker update热修改:docker update --restart=always 容器名或ID。
启动后,滚动日志也被创建并映射到了本地相应目录下:

确认openclaw容器运行正常(STATUS一列显示(healthy)
docker ps

2.6 从windows宿主机上访问openclaw的WEB UI:
首先,查看openclaw gateway run启动后的openclaw.json:

发现主要新增了2处内容:
1、开启了web ui访问配置:
"controlUi": {
"allowedOrigins": [
"http://localhost:18789",
"http://127.0.0.1:18789"
]
}
2、访问网关的授权模式是token
"auth": {
"mode": "token",
"token": "a26e1485fe4ebbc350411eae999b385f54744a922833a867"
},
其次,梳理下当前网络架构:
windows物理(虚拟机的宿主机,相关的ip=192.168.174.1)-->VMware虚拟机(docker的宿主机,ip=192.168.174.31)-->openclaw容器(桥接网络:ip=172.17.0.2),那么要想访问容器里的openclaw web ui需要在windows主机上做映射:
ssh -N -L 18789:127.0.0.1:18789 root@192.168.174.31
初次访问虚拟机会询问,输入yes;然后输入虚拟机主机的root密码,之后一致保持CMD窗口不要关闭
在window宿主机浏览器访问:http://127.0.0.1:18789,成功显示WEB UI如下:默认web ui不会自动带openclaw.json里的token,因此会报错:device token mismatch

在docker宿主机也就是VMware虚拟机上查看openclaw.json

粘贴token到UI界面的“网关令牌”框里:

然后点击“连接”按钮,成功登录对话界面如下:

因为没有配置任何有效的API也就没有模型可用,这是输入问题,会出现提示因为没有配置任何有效的API也就没有模型可用,这是输入问题,会出现提示

2.7 设置AI模型(调用API Key)-以deepseek为例
2.7.1 在deepseek开发api平台注册并充值
访问https://platform.deepseek.com/api_keys

点击“创建API key”:

点击复制API key,等下在openclaw里配置时粘贴这个API key!
2.7.2 openclaw引导页配置deepseek API
docker exec -it openclaw openclaw onboard

选择QuickStart

选择Use existing values

在provider/model里选DeepSeek

输入刚才复制的deepseek的API key,之后等待一段时间:

选择default默认的具体模型:

下一步的选择channel频道可以先跳过

这时openclaw.jsonh会被写入新的配置并造成openclaw容器停止,因为docker run启动参数有--restart=unless-stopped会被自动拉起恢复运行。
此时,windows宿主机的浏览器web ui显示:网关重启

再点击“连接”,报错:连接不上!

确认windows的CMD里的映射没有中断:

那么,回到虚拟机查看openclaw.json的配置:

确认token没有变化,与web ui登录页面里token一致(这是因为刚才引导页配置选了Use existing values所以token保持不变),
小窍门:
此时注意到配置里新增的一句内容:
"bind": "loopback",
需要修改:"bind": "lan",

保存后,重启openclaw容器:
docker restart openclaw
等容器状态稳定后,重新在windows宿主机刷新浏览器页面的http://127.0.0.1:18789页面,成功登录:在对话框输入/model,得到回复显示当前模型为deepseek-chat

至此,docker run方式部署openclaw成功!
后继使用注意:
1、以上docker run参数可支持文字/图片的交互,如果后期需要实现语音等交互,需要openclaw获取宿主机的声卡等设备权限,需要进一步复杂docker run参数才能实现。
2、-v映射的目录不包括openclaw的skill等,这样在容器里安装了skill或者其他文件,一旦容器删除重新docker run后,会造成skill丢失,需要重新安装。需要更复杂的高可用方案配置如删除前需要迁移openclaw容器。
更多推荐




所有评论(0)