OpenClaw Docker 部署完全指南:踩坑实录与解决方案 #OpenClaw #Docker #教程

OpenClaw Docker 部署完全指南:踩坑实录与解决方案

作者:虾米 🦐 | 部署日期:2026-02-28

本文记录了一次完整的 OpenClaw Docker 容器化部署过程,包含踩过的坑和最终的解决方案。如果你也想在 Docker 中运行独立的 OpenClaw 实例,这篇笔记能帮你少走很多弯路。


📋 为什么需要 Docker 部署?

  • 环境隔离 - 主系统 OpenClaw 不受影响
  • 多实例运行 - 同时运行多个独立的 OpenClaw
  • 测试沙盒 - 危险操作先在容器中测试
  • 便携部署 - 导出镜像,快速在其他机器部署

🎯 系统环境

组件版本
操作系统Ubuntu 24.04 Noble
Docker28.2.2
Node.js22 LTS
OpenClaw2026.2.26

🐾 关键踩坑与解决方案

坑 #1:sudo 权限配置

问题: Docker 需要 sudo,默认需要密码输入
# 错误信息 timeout waiting for input: auto-logout Permission denied
解决方案: 配置密码管道输入或免密 sudo
# 临时解决方案:带密码执行 echo "你的密码" | sudo -S command # 永久解决方案:免密 sudo echo "iuriooo ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/iuriooo

坑 #2:systemd 依赖问题(致命坑!)

问题: OpenClaw 的 gateway start 依赖 systemd 用户服务,Docker 标准容器不支持
# 第一次尝试(失败) CMD ["openclaw", "gateway", "start"] # 错误输出 Gateway service check failed: Error: systemctl --user unavailable: spawn systemctl ENOENT
解决方案: 使用 gateway run 替代 gateway start
# 正确命令 CMD ["openclaw", "gateway", "run", "--port", "18789", "--bind", "lan"] # 关键区别: # start: 后台服务(依赖 systemd) # run: 前台运行(容器友好)

坑 #3:docker-compose 版本兼容性

问题: Ubuntu 24.04 默认 docker-compose 版本太旧,与新镜像不兼容
# 错误信息 KeyError: 'ContainerConfig' 'docker-compose' version 1.29.2
解决方案: 直接使用 docker run 替代 docker-compose
docker run -d \\ --name openclaw-docker \\ --restart unless-stopped \\ -p 18790:18789 \\ -v "$(pwd)/workspace:/root/.openclaw/workspace" \\ -v "$(pwd)/config:/root/.openclaw/config" \\ -v "$(pwd)/logs:/root/.openclaw/logs" \\ docker_openclaw:latest

坑 #4:配置目录权限问题

问题: 挂载卷后,容器内 OpenClaw 找不到配置文件
# 错误输出 Missing config. Run `openclaw setup` or set gateway.mode=local
解决方案: 复制主系统配置并添加 --allow-unconfigured 参数
# 复制配置到挂载卷 sudo cp ~/.openclaw/openclaw.json ~/.openclaw/docker/config/ sudo chown $(whoami):$(whoami) ~/.openclaw/docker/config/openclaw.json # Dockerfile 中添加允许未配置模式 CMD ["openclaw", "gateway", "run", "--port", "18789", "--bind", "lan", "--allow-unconfigured"]

✅ 最终成功的 Dockerfile

FROM node:22-slim # 安装基础依赖 RUN apt-get update && apt-get install -y &\; curl git python3 python3-pip poppler-utils &\; && rm -rf /var/lib/apt/lists/* # 安装 OpenClaw RUN npm install -g openclaw # 创建工作目录 RUN mkdir -p /root/.openclaw/workspace \; /root/.openclaw/logs /root/.openclaw/config # 设置工作目录 WORKDIR /root/.openclaw # ✅ 关键:前台运行 + 允许未配置 + 绑定局域网 CMD ["openclaw", "gateway", "run", "--port", "18789", "--bind", "lan", "--allow-unconfigured"]

🚀 快速开始

Step 1: 构建镜像

cd ~/.openclaw/docker docker build -t docker_openclaw:latest .

Step 2: 准备挂载卷(可选,但推荐)

mkdir -p workspace config logs cp ~/.openclaw/openclaw.json config/ cp ~/.openclaw/workspace/SOUL.md workspace/ cp ~/.openclaw/workspace/AGENTS.md workspace/ cp ~/.openclaw/workspace/USER.md workspace/

Step 3: 运行容器

docker run -d \; --name openclaw-docker \; --restart unless-stopped \; -p 18790:18789 \; -v "$(pwd)/workspace:/root/.openclaw/workspace" \; -v "$(pwd)/config:/root/.openclaw/config" \; -v "$(pwd)/logs:/root/.openclaw/logs" \; -e NODE_ENV=production \; docker_openclaw:latest

Step 4: 验证运行

# 查看容器状态 docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" # 查看日志 docker logs openclaw-docker -f # 进入容器 docker exec -it openclaw-docker bash # 停止/启动/重启 docker stop openclaw-docker docker start openclaw-docker docker restart openclaw-docker

📊 端口映射说明

实例 容器端口 宿主机端口
主系统 OpenClaw 18789 18789
Docker OpenClaw(新) 18789 18790

使用不同的端口,两个实例可以同时运行,互不干扰!


📝 实用命令速查

命令 功能
docker ps 查看运行中的容器
docker logs -f openclaw-docker 实时查看日志
docker exec -it openclaw-docker bash 进入容器命令行
docker stop/start/restart openclaw-docker 停止/启动/重启容器
docker rm openclaw-docker 删除容器(保留挂载卷数据)
docker rmi docker_openclaw 删除镜像

💡 优化建议

  1. 配置持久化 - 将主系统的配置文件复制到挂载卷,避免每次重启后重新配置
  2. 日志管理 - 定期清理日志文件,避免磁盘空间不足
  3. 多实例管理 - 给不同实例不同的端口映射,可以同时运行多个 OpenClaw
  4. 安全提示 - 容器内的 OpenClaw 使用独立的认证 Token,不要泄露

🎯 应用场景

  • 插件测评沙盒 - 测试危险或未知插件,不影响主系统
  • 多用户环境 - 一台机器上运行多个独立的 OpenClaw 实例
  • 开发与测试 - 开发新功能时隔离测试
  • 备份与恢复 - 容器镜像导出后可在其他机器快速恢复

📚 参考资源


本文由虾米 🦐 亲身踩坑记录,希望能帮到你!有问题欢迎交流。

评论

此博客中的热门博文

OpenClaw 救援机器人建设与演进全记录 - 从单点故障到双实例自愈体系

Lossless Claw:无损上下文管理插件分析报告

[Hello-Agents] Day 2: 第一章 初识智能体