hermes agent在docker中重启后数据丢失,需通过命名卷、绑定挂载、组合挂载或docker compose方式持久化/root/.hermes目录,确保memory.md、user.md、skills/等关键路径不丢失,以维持自进化能力。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在 Docker 中运行 Hermes Agent,但发现重启容器后记忆、技能或用户配置丢失,则可能是由于数据未正确挂载到宿主机。以下是实现数据持久化的具体配置方法:
一、使用命名卷挂载关键目录
命名卷由 Docker 管理,具备自动备份、迁移与权限隔离优势,适用于生产环境长期运行。Hermes Agent 的 MEMORY.md、USER.md、skills/、logs/ 等目录必须持久化,否则自进化能力将中断。
1、创建专用命名卷:
docker volume create hermes-data
2、运行容器时挂载至 /root/.hermes 路径:
docker run -d --name hermes-agent --mount source=hermes-data,target=/root/.hermes -e HERMES_MODEL_API_KEY=sk-xxx -p 8080:8080 hermesorg/hermes:latest
3、验证挂载是否生效:
docker inspect hermes-agent | grep -A 5 Mounts
4、检查容器内路径内容:
docker exec -it hermes-agent ls -la /root/.hermes
二、绑定挂载宿主机绝对路径
绑定挂载便于直接编辑配置、查看日志与调试技能文件,适合开发与测试场景。需确保宿主机目标路径存在且权限可写,否则容器启动失败。
1、在宿主机创建持久化目录:
mkdir -p /opt/hermes/{config,data,skills,logs}
2、赋予读写权限:
chmod -R 755 /opt/hermes && chown -R $UID:$UID /opt/hermes
3、启动容器并映射各子目录:
docker run -d --name hermes-agent \
-v /opt/hermes/data:/root/.hermes \
-v /opt/hermes/config:/root/.hermes/config \
-v /opt/hermes/skills:/root/.hermes/skills \
 >-v /opt/hermes/logs:/root/.hermes/logs \
-e HERMES_MODEL_API_KEY=您的百炼或OpenAI API Key \
-p 8080:8080 \
hermesorg/hermes:latest
4、确认挂载后文件归属:
docker exec -it hermes-agent ls -ld /root/.hermes
三、组合式挂载:命名卷 + 显式绑定
兼顾安全性与可控性,将核心状态(memory、user)交由命名卷管理,而技能定义与日志分析目录采用绑定挂载,便于人工干预与审计。
1、创建基础命名卷:
docker volume create hermes-core
2、准备宿主机技能与日志目录:
mkdir -p ~/hermes-dev/skills ~/hermes-dev/logs
3、执行混合挂载命令:
docker run -d --name hermes-agent \
--mount source=hermes-core,target=/root/.hermes \
-v ~/hermes-dev/skills:/root/.hermes/skills:rw \
-v ~/hermes-dev/logs:/root/.hermes/logs:rw \
-e HERMES_MODEL_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx \
-e HERMES_MEMORY_FILE=MEMORY.md \
-p 8080:8080 \
hermesorg/hermes:latest
4、验证 MEMORY.md 是否随容器重启保留:
docker restart hermes-agent && sleep 5 && docker exec hermes-agent cat /root/.hermes/MEMORY.md | head -n 3
四、Docker Compose 方式声明持久化配置
Docker Compose 提供声明式配置,适合团队协作与版本控制。通过 volumes 字段明确定义挂载策略,并利用 environment 指定关键参数,避免命令行泄露敏感信息。
1、创建 docker-compose.yml 文件:
version: "3.8"
services:
hermes:
image: hermesorg/hermes:latest
container_name: hermes-agent
volumes:
- hermes-data:/root/.hermes
- ./custom-skills:/root/.hermes/skills:ro
environment:
- HERMES_MODEL_API_KEY=${HERMES_API_KEY}
- HERMES_JVM_OPTS=-Xms2g-Xmx4g
ports:
- "8080:8080"
2、在当前目录创建 .env 文件并写入密钥:
echo "HERMES_API_KEY=sk-xxx" > .env
3、启动服务:
docker-compose up -d
4、查看卷关联状态:
docker volume inspect hermes-data











