Hermes Agent Docker部署教程:一条命令跑起来(2026最新)

OpenClaw 企业定制 私人订制工作流 优化运维 openclaw记忆优化 问题咨询解决 请加微信交流

微信: aixbwz

Docker是部署Hermes最干净的方式,不需要在机器上安装Python等任何依赖,一行命令跑起来。容器化部署适合生产环境,也方便迁移和备份。这篇讲清楚Docker部署的两种方式、配置方法、数据持久化、以及常见问题解决。

为什么用Docker部署

相比直接在系统上安装,Docker部署有几个明显优势:

  • 零依赖:不需要安装Python、pip、系统库等
  • 环境隔离:不污染宿主机系统环境
  • 部署简单:一行命令搞定
  • 迁移方便:导出镜像备份,导入恢复
  • 版本控制:可以指定任意版本
  • 清理容易:删除容器和镜像即可完全清除

推荐生产环境使用Docker部署。

方式一:直接运行

最简单的Docker运行方式:

docker run -it --rm   -v ~/.hermes:/home/hermes/.hermes   -e OPENROUTER_API_KEY=sk-or-v1-xxx   nousresearch/hermes-agent:latest

参数说明

  • -it:交互模式,保留终端连接
  • –rm:退出后自动删除容器
  • -v ~/.hermes:/home/hermes/.hermes:挂载配置目录,重要!
  • -e OPENROUTER_API_KEY=xxx:设置API Key环境变量

首次运行会做什么

  1. 从Docker Hub拉取镜像
  2. 创建并启动容器
  3. 加载配置目录
  4. 启动Hermes Agent

方式二:docker-compose(推荐)

docker-compose管理更方便,适合长期运行:

创建docker-compose.yml

version: '3.8'
services:
  hermes:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-agent
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
      - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
      - TZ=Asia/Shanghai
    volumes:
      - ~/.hermes:/home/hermes/.hermes
    stdin_open: true
    tty: true

创建.env文件

# API Keys
OPENROUTER_API_KEY=sk-or-v1-xxx
TELEGRAM_BOT_TOKEN=xxx

# 其他配置
TZ=Asia/Shanghai

启动命令

# 启动(后台运行)
docker-compose up -d

# 查看状态
docker-compose ps

# 查看日志
docker-compose logs -f

# 停止
docker-compose down

重启和更新

# 重启
docker-compose restart

# 更新镜像
docker-compose pull
docker-compose up -d

# 完全重建
docker-compose down
docker-compose up -d

数据持久化

容器里的数据默认不保存,关机就消失。需要挂载目录:

必须挂载的目录

~/.hermes/
  config.yaml      # 配置文件,必需
  memory/         # 记忆数据,必须保留
  skills/         # 技能文件
  logs/           # 日志
  audit.log       # 审计日志

完整挂载示例

docker run -it --rm   -v ~/.hermes:/home/hermes/.hermes   -v ~/.ssh:/home/hermes/.ssh:ro   -v /path/to/workspace:/workspace:ro   -e OPENROUTER_API_KEY=sk-or-v1-xxx   nousresearch/hermes-agent:latest

权限说明

容器内进程以hermes用户运行,确保挂载的目录有正确权限:

# 确保目录权限
chmod 755 ~/.hermes

# 如果需要写入
chmod 755 ~/projects

网络配置

开启完整网络访问

# 使用主机网络模式
docker run -it --rm   --network host   -v ~/.hermes:/home/hermes/.hermes   nousresearch/hermes-agent:latest

HTTP代理配置

docker run -it --rm   -e HTTP_PROXY=http://proxy.example.com:8080   -e HTTPS_PROXY=http://proxy.example.com:8080   -e NO_PROXY=localhost,127.0.0.1   -v ~/.hermes:/home/hermes/.hermes   nousresearch/hermes-agent:latest

指定DNS

docker run -it --rm   --dns 8.8.8.8   --dns 8.8.4.4   -v ~/.hermes:/home/hermes/.hermes   nousresearch/hermes-agent:latest

资源限制

可以限制容器使用的资源:

# 内存限制
docker run -it --rm   --memory="2g"   --memory-swap="2g"   -v ~/.hermes:/home/hermes/.hermes   nousresearch/hermes-agent:latest

# CPU限制
docker run -it --rm   --cpus="2"   -v ~/.hermes:/home/hermes/.hermes   nousresearch/hermes-agent:latest

构建自定义镜像

如果需要预装额外依赖,可以构建自定义镜像:

Dockerfile

cat > Dockerfile << 'EOF'
FROM nousresearch/hermes-agent:latest

# 安装额外依赖
RUN pip install --no-cache-dir     pandas     numpy     matplotlib

# 复制自定义配置
COPY config.prod.yaml /home/hermes/.hermes/config.yaml

# 设置工作目录
WORKDIR /workspace

# 启动命令
CMD ["hermes", "chat"]
EOF

构建和运行

# 构建镜像
docker build -t my-hermes:1.0 .

# 运行
docker run -it --rm   -v ~/.hermes:/home/hermes/.hermes   my-hermes:1.0

Gateway模式部署

Docker里运行Gateway,同时服务多个消息平台:

docker run -it --rm   -p 3000:3000   -v ~/.hermes:/home/hermes/.hermes   -e TELEGRAM_BOT_TOKEN=xxx   -e DISCORD_BOT_TOKEN=yyy   -e SLACK_BOT_TOKEN=zzz   nousresearch/hermes-agent:latest gateway

数据备份和恢复

备份配置和数据

# 备份整个配置目录
tar -czvf hermes-backup-$(date +%Y%m%d).tar.gz ~/.hermes/

# 查看备份
ls -la hermes-backup-*.tar.gz

恢复备份

# 解压到临时目录
tar -xzvf hermes-backup-20240101.tar.gz -C /tmp/

# 复制到目标位置
cp -r /tmp/.hermes/* ~/.hermes/

# 重启容器
docker-compose restart

增量备份

# 只备份记忆数据(增量最大的部分)
tar -czvf hermes-memory-$(date +%Y%m%d).tar.gz ~/.hermes/memory/

多环境配置

# .env.dev - 开发环境
OPENROUTER_API_KEY=sk-or-v1-dev-xxx
NODE_ENV=development
LOG_LEVEL=debug

# .env.prod - 生产环境
OPENROUTER_API_KEY=sk-or-v1-prod-xxx
NODE_ENV=production
LOG_LEVEL=info
# 使用指定环境
docker-compose --env-file .env.prod up -d

常见问题

容器内无法访问网络?

检查是否开启了--network host,或者容器内DNS配置是否正确。尝试加--dns 8.8.8.8参数。

配置文件挂载后不生效?

确保挂载路径正确:-v ~/.hermes:/home/hermes/.hermes。注意容器内路径是/home/hermes/.hermes。

权限被拒绝?

容器内用户是hermes(uid 1000),确保~/.hermes目录权限755,子文件权限644或755。

# 修复权限
chown -R 1000:1000 ~/.hermes

数据丢失?

没有挂载volume会导致所有数据丢失。每次都要确保~/.hermes目录挂载了。

端口被占用?

检查3000端口是否被占用:lsof -i:3000。或者改用其他端口:-p 3001:3000。

容器无法启动?

查看日志诊断:docker logs hermes-agent或docker-compose logs hermes。

总结

Docker是最干净的部署方式:

  • 一行命令跑起来
  • 不需要Python等任何依赖
  • 环境隔离不污染系统
  • 迁移备份非常方便
  • 建议用docker-compose管理

生产环境推荐docker-compose方式,方便管理。

相关文章

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

七天热门