用docker来安装openclaw

用docker来安装openclaw

前言

虽然最近openclaw火的不行,但是他依然是一个高速发展和成长中的系统或者说软件,还不是很成熟:看看他开源代码,一天一个release也常见。

所以,遇到各种bug,各种与插件的兼容性问题,也不奇怪。

如果安装在裸机中,回退升级都是很麻烦的事情,所以,我想把他安装在docker中,方便升级和回退。

安装

我习惯用2中方式来在docker中安装openclaw:

  1. 启动一个基础镜像,把他当作一个VPS来安装openclaw
  2. 使用Dockerfile,编辑一个镜像,然后使用docker compose 编排来启动

第一种方式更灵活,适合测试和实验新版本,开发新插件。

第二种方法可以封装系统,适合用来分享镜像

现在来体验一下这俩种方式吧:

在基础镜像内手工安装

根据官方文档推荐使用node 22+,所以选择使用node:22-trixie作为基础镜像:

启动脚本:

bash 复制代码
docker run -it --net=host -v ./openclaw:/root/.openclaw --name openclaw node:22-trixie bash

简单解释:

bash 复制代码
--net=host   #直接使用主机网络,简化测试
-v ./openclaw:/root/.openclaw   #这个是openclaw的数据目录,持久化下来
--name openclaw   #为这个实例起个名字
bash  #启动bash
安装
bash 复制代码
npm install -g openclaw@latest

安装成功:

初始化配置

第一次启动可以选择使用:openclaw onboard

这个命令会使用引导方式去配置所有的信息并最后启动openclaw gateway,我们使用这种方式:

以上图,红色的就是每一步,灰色的就是我们选择或者填入的信息,其他特别要注意以下这步:

飞书的这个插件已经被集成在openclaw中了,但是如果这里你再选择安装,就会出现2个版本,会冲突。

当你看到这个页面的适合,就已经完成了配置,且已经启动了:

但是这时候其实是无法访问的:

我们安装选择的快速配置,没有配置网络,所以他目前监听本地网络,且禁止非https访问,所以实际无法访问。(如果是部署一个生产用的,准备放在一个caddy或者nginx等反向代理服务器后面,倒是可以的。)

使用ctrl+c终止程序运行,然后直接使用vim编辑:

bash 复制代码
vim ~/.openclaw/openclaw.json

找到gateway部分,修改mode、bind、controlUi部分,最终如下:

yaml 复制代码
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "lan",
    "controlUi": {
      "enabled": true,
      "allowInsecureAuth": true
    },    
    "auth": {
      "mode": "token",
      "token": "1876cbd181533358223674dab4841f60c252f62c206a53f9"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    }
  }

另:如果你还没用大模型API,可以先看看这篇:

来了!老黄NVIDIA免费为clawdbot续命

保存后启动:

bash 复制代码
openclaw gateway

当你看到这个页面的时候,就可以啦:

访问地址:

http://你的IP:18789/?token=你的token

测试一下:

你可以看到这个页面,先给他起个名字:

保存镜像

在主机下执行查询,可以看到运行的容器,直接使用commit来保存成镜像:

复制代码
docker ps
docker commit f0bd197aec12 openclaw:0.0.1

这样使用docker来安装openclaw就完成啦,就保存了一个指定的版本,也不影响我尝试安装其他的版本。

使用Dockerfile构建openclaw镜像

现在来试试打包发布的方式,来安装openclaw:

openclaw官方是支持使用docker来安装的,所以他的源码中有docker的所有配置,且官方文档也有相关内容。

所以我准备以他为基础,简化一下,将一些模板化的配置改成我需要的写死的信息,可以简化很多.

先下载代码:

bash 复制代码
git clone --depth 1 https://github.com/openclaw/openclaw

打开dockerfile,主要修改了三个地方:

  1. 安装了git、curl、jq
  2. 修改为root用户运行
  3. 删除自带的飞书软件

步骤3不是必须的,而是因为我习惯了用了很久的一个第三方飞书插件,而系统俩个飞书插件是会冲突的。

编译:

bash 复制代码
docker build -t openclaw:local -f Dockerfile .

构建完成后使用docker compose 编排:

yaml 复制代码
services:
  openclaw:
    image: openclaw:local
    container_name: openclaw
    restart: unless-stopped
    env_file:
      - ./env.file
    environment:
      TZ: Asia/Shanghai
      HOME: /root
      TERM: xterm-256color
    volumes:
      - /home/openclaw:/root
      - ./logs:/tmp/openclaw
    command: ["node","dist/index.js","gateway","--port","18789",]

简单解释:

  1. /home/openclaw:/root :将运行用户全部持久化下来

  2. ./logs:/tmp/openclaw :openclaw默认的输出日志位于/tmp/openclaw 刚开始测试我希望能更方便的查看

  3. command : 启动脚本,但是第一次运行的时候不要添加,因为还没配置,是无法执行的,可以不填

这样就会使用dockefile里面的默认命令,使用无配置文件启动

初始化配置

可以启动容器后,接入容器后来配置,也可以直接运行命令配置:

bash 复制代码
# 进入运行的容器配置:
docker exec -it openclaw bash
node /app/disk/index.js onboard

# 直接启动命令配置
docker compose run --rm openclaw onboard

启动配置后的步骤,和第一种方式一样的,就不赘述了。

注意:

使用官方dockerfile构建的镜像,不像使用npm全局安装的,命令只能使用node去运行,例如:

安装飞书插件的俩这差别:

bash 复制代码
#使用npm全局安装的时候
openclaw plugins install @m1heng-clawd/feishu

# 使用官方dockerfile构建的镜像
node /app/dist/index.js plugins install @m1heng-clawd/feishu

小结

openclaw真的给ai带来了翻天覆地的变化,给一个只会嘴活的ai,添加了一双手!

但是目前也是在告诉发展期间,版本更迭太快,使用docker的方式能更好的隔离环境,更快的更新或者回退版本。

欢迎关注:

https://mp.weixin.qq.com/s/7ExVbQHcd8v9CxA8nL_XWg?token=210876465\&lang=zh_CN

相关推荐
雪可问春风1 天前
docker环境部署
运维·docker·容器
美酒没故事°1 天前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
鸿乃江边鸟1 天前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
双份浓缩馥芮白1 天前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
本旺1 天前
【Openclaw 】完美解决 Codex 认证失败
ai·codex·openclaw·小龙虾·gpt5.4
张張4081 天前
(域格)环境搭建和编译
c语言·开发语言·python·ai
乐鑫科技 Espressif1 天前
使用 MCP 服务器,把乐鑫文档接入 AI 工作流
人工智能·ai·esp32·乐鑫科技
语戚1 天前
Stable Diffusion 入门:架构、空间与生成流程概览
人工智能·ai·stable diffusion·aigc·模型
俊哥V1 天前
每日 AI 研究简报 · 2026-04-08
人工智能·ai
kobe_OKOK_1 天前
S7 adapter Docker run
运维·docker·容器