在Docker容器中安全运行OpenClaw:无需虚拟机,体验AI助手

在Docker容器中安全运行OpenClaw:无需虚拟机,体验AI助手

    • 一、引言
    • 二、什么是OpenClaw?
    • 三、为什么选择Docker?
    • 四、前置准备
    • 五、详细操作步骤
      • [1. 创建支持systemd的Docker容器](#1. 创建支持systemd的Docker容器)
      • [2. 进入容器并安装基础依赖](#2. 进入容器并安装基础依赖)
      • [3. 安装Node.js](#3. 安装Node.js)
      • [4. 安装Chrome浏览器](#4. 安装Chrome浏览器)
      • [5. 配置中文环境](#5. 配置中文环境)
      • [6. 测试浏览器是否正常工作](#6. 测试浏览器是否正常工作)
      • [7. 启动systemd用户实例](#7. 启动systemd用户实例)
      • [8. 安装OpenClaw](#8. 安装OpenClaw)
      • [9. 获取必要的密钥信息](#9. 获取必要的密钥信息)
      • [10. 安装飞书插件](#10. 安装飞书插件)
      • [11. 创建配置文件](#11. 创建配置文件)
      • [12. 启动OpenClaw网关](#12. 启动OpenClaw网关)
      • [13. 在飞书中测试](#13. 在飞书中测试)
      • [14. 安装为系统服务(可选)](#14. 安装为系统服务(可选))
    • 六、总结

一、引言

你是否对AI助手感兴趣,但又担心直接安装在电脑上会影响系统安全或权限?购买云服务器又觉得不划算,使用虚拟机则占用资源过多?本文将介绍一种折中方案------在Docker容器中运行OpenClaw,既能隔离环境保障安全,又轻量便捷,同时支持浏览器功能,让你轻松体验这款AI助手。

本文适合有一定Docker基础,希望以安全、可控制的方式尝试OpenClaw的开发者或技术爱好者。


二、什么是OpenClaw?

OpenClaw 是一款开源的AI助手框架,支持通过多种平台(如飞书)进行交互。它能够调用浏览器执行任务,结合大语言模型(如火山引擎的Doubao模型)完成信息查询、自动化操作等智能任务。

三、为什么选择Docker?

  • 安全隔离:不直接占用主机系统权限,避免潜在的安全风险。
  • 环境干净:所有依赖和配置封装在容器内,不会污染主机环境。
  • 轻量便捷:相比虚拟机,Docker容器启动更快、占用资源更少。
  • 易于清理:测试完成后可轻松删除容器,不留痕迹。

四、前置准备

在开始之前,请确保你已准备好:

  1. 安装好Docker并启动服务。
  2. 拥有一个飞书账号(用于创建机器人)。
  3. 注册火山引擎账号并获取API Key(用于调用Doubao模型)。

五、详细操作步骤

1. 创建支持systemd的Docker容器

我们使用一个已经集成systemd的Ubuntu镜像,以便在容器内运行系统服务。

bash 复制代码
# 如果已有同名容器,先停止并删除
docker stop openclaw_docker
docker rm openclaw_docker

# 创建新容器
docker run -d --name openclaw_docker \
  --privileged --net=host \
  --tmpfs /tmp \
  --tmpfs /run \
  --tmpfs /run/lock \
  -v /sys/fs/cgroup:/sys/fs/cgroup:rw \
  -v $PWD:/home  -w /home \
  --cgroupns=host \
  -e container=docker \
  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/trfore/docker-ubuntu2404-systemd:latest /sbin/init

注意--privileged 参数会给予容器较高权限,因此请仅在自己可控的环境中使用。

2. 进入容器并安装基础依赖

bash 复制代码
# 进入容器终端
docker exec -ti openclaw_docker bash
		
# 更新软件源并安装常用工具
apt update
apt install curl wget vim -y
apt install xz-utils -y

3. 安装Node.js

OpenClaw 基于Node.js开发,因此需要先安装Node.js环境。

bash 复制代码
# 下载并解压Node.js
wget -O node-v24.13.0-linux-x64.tar.xz https://nodejs.org/dist/v24.13.0/node-v24.13.0-linux-x64.tar.xz
tar -xf node-v24.13.0-linux-x64.tar.xz
cp node-v24.13.0-linux-x64/* /usr/local/ -rf

# 验证安装
node --version

4. 安装Chrome浏览器

OpenClaw 需要浏览器来执行网页操作任务。

bash 复制代码
# 下载并安装Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
dpkg -i google-chrome-stable_current_amd64.deb
apt --fix-broken install -y # 修复可能的依赖问题

5. 配置中文环境

如果你的任务涉及中文网页,建议配置中文字体和语言支持。

bash 复制代码
# 安装中文字体和语言包
apt-get install -y locales fonts-wqy-zenhei language-pack-zh-hans -y

# 生成中文locale并设置环境变量
locale-gen zh_CN.UTF-8
locale-gen zh_CN.GBK
echo "export LANG=zh_CN.UTF-8" >> ~/.bashrc
echo "export LANGUAGE=zh_CN:zh" >> ~/.bashrc
source ~/.bashrc

6. 测试浏览器是否正常工作

bash 复制代码
# 使用headless模式截取百度首页,验证浏览器可正常运行
/usr/bin/google-chrome-stable --headless --disable-gpu \
	--no-sandbox --screenshot="screenshot.png" \
	--window-size=1920,1080 https://www.baidu.com

如果运行成功,当前目录下会生成 screenshot.png 图片。

7. 启动systemd用户实例

OpenClaw 服务依赖于systemd的用户实例来管理。

bash 复制代码
export XDG_RUNTIME_DIR=/run/user/$(id -u)
mkdir -p $XDG_RUNTIME_DIR
chmod 0700 $XDG_RUNTIME_DIR
systemd --user &

8. 安装OpenClaw

bash 复制代码
curl -fsSL https://openclaw.bot/install.sh | bash

安装过程中,当看到 "Starting setup..." 提示时,按 Ctrl+C 取消初始配置向导,因为我们后面会手动创建配置文件。

9. 获取必要的密钥信息

10. 安装飞书插件

bash 复制代码
openclaw plugins install @m1heng-clawd/feishu

11. 创建配置文件

将以下命令中的 feishu_appIdfeishu_appSecretdoubao_apiKey 替换为你自己的值,然后执行:

json 复制代码
# 设置环境变量(请替换为你的实际密钥)
export feishu_appId="<你的飞书appId>"
export feishu_appSecret="<你的飞书appSecret>"
export doubao_apiKey="<你的火山引擎API Key>"

# 生成OpenClaw配置文件
cat > ~/.openclaw/openclaw.json << EOF
{
  "meta": {
    "lastTouchedVersion": "2026.2.6-3",
    "lastTouchedAt": "2026-02-08T07:21:25.150Z"
  },
  "wizard": {
    "lastRunAt": "2026-02-08T07:21:25.140Z",
    "lastRunVersion": "2026.2.6-3",
    "lastRunCommand": "configure",
    "lastRunMode": "local"
  },
  "browser": {
    "enabled": true,
    "executablePath": "/usr/bin/google-chrome-stable",
    "headless": true,
    "noSandbox": true,
	"defaultProfile": "desktop",
	"profiles": {
		"desktop": { "cdpUrl": "http://127.0.0.1:9222",color: "#00AA00" }
	}	
  },
  "auth": {
    "profiles": {
      "doubao:default": { "provider": "doubao", "mode": "api_key" }
    }
  },
  "models": {
    "providers": {
      "doubao": {
        "baseUrl": "https://ark.cn-beijing.volces.com/api/v3",
        "apiKey": "$doubao_apiKey",
        "api": "openai-completions",
        "models": [
          {
            "id": "doubao-seed-1-8-251228",
            "name": "doubao-seed-1-8-251228",
            "reasoning": false,
            "input": ["text"],
            "cost": {"input": 0,"output": 0,"cacheRead": 0,"cacheWrite": 0},
            "contextWindow": 128000,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "doubao/doubao-seed-1-8-251228"
      },
      "models": {
        "doubao/doubao-seed-1-8-251228": { "alias": "doubao" }
      },
      "workspace": "/root/.openclaw/workspace",
      "compaction": {
        "mode": "safeguard"
      },
      "maxConcurrent": 4,
      "subagents": {"maxConcurrent": 8}
    }
  },
  "messages": {
    "ackReactionScope": "group-mentions"
  },
  "commands": {
    "native": "auto",
    "nativeSkills": "auto",
    "restart": true
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "appId": "$feishu_appId",
      "appSecret": "$feishu_appSecret",
      "domain": "feishu",
      "groupPolicy": "open",
      "dmPolicy": "open",
      "allowFrom": ["*"]
    }
  },
  "gateway": {
    "port": 18789,
    "mode": "local",
    "bind": "loopback",
    "controlUi": {"allowInsecureAuth": true},
    "auth": {
      "mode": "token",
      "token": "94d6e2dd73d8b31075ac706465c5a1a7a96e662e5992cf8b"
    },
    "tailscale": {
      "mode": "off",
      "resetOnExit": false
    }
  },
  "plugins": {
    "entries": {
      "feishu": {
        "enabled": true
      }
    },
    "installs": {
      "feishu": {
        "source": "npm",
        "spec": "@m1heng-clawd/feishu",
        "installPath": "/root/.openclaw/extensions/feishu",
        "version": "0.1.7",
        "installedAt": "2026-02-08T06:22:56.392Z"
      }
    }
  }
}
EOF

12. 启动OpenClaw网关

bash 复制代码
openclaw gateway

如果一切正常,你会看到网关启动成功的日志信息。

13. 在飞书中测试

打开手机飞书APP,找到你创建的机器人,开始对话。

14. 安装为系统服务(可选)

如果你希望OpenClaw在后台持续运行,可以将其安装为systemd服务:

bash 复制代码
openclaw gateway install

# 查看服务状态
systemctl --user status openclaw-gateway.service

# 停止服务
systemctl --user stop openclaw-gateway.service

六、总结

通过Docker容器运行OpenClaw,你在获得完整功能体验的同时,也保证了主机系统的安全与洁净。这种方式特别适合短期测试、学习研究或多环境隔离使用的场景。

现在,你已拥有一个运行在隔离环境中的AI助手,可以安全地探索其各项功能了。如果在配置过程中遇到问题,可以参考OpenClaw官方文档或相关社区进行交流。


本文基于实践编写,部分配置可能随版本更新而变化,请以官方文档为准。

相关推荐
种时光的人7 小时前
CANN 生态 ×AIGC 合规:cann-compliance 让大模型落地既安全又合规
安全·aigc
&星痕&7 小时前
人工智能:深度学习:1.pytorch概述(2)
人工智能·深度学习
eyun_185007 小时前
把健康小屋搬进单位 让职工暖心 让履职安心
大数据·人工智能·经验分享
草莓熊Lotso7 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui
愚公搬代码7 小时前
【愚公系列】《AI短视频创作一本通》019-AI语音及音乐的创作(AI短视频语音创作实例)
人工智能·音视频
wukangjupingbb7 小时前
AI在靶点识别(Target Identification)中的关键作用与开源工具生态
人工智能·开源
power 雀儿7 小时前
FFN前馈网络C++实现
人工智能·深度学习
多恩Stone7 小时前
【3D AICG 系列-8】PartUV 流程图详解
人工智能·算法·3d·aigc·流程图
江湖有缘7 小时前
Docker部署music-tag-web音乐标签编辑器
前端·docker·编辑器