需同步镜像、容器配置、挂载数据卷及运行时参数:先检查源容器状态与mounts/ports/env,再用docker save导出镜像、tar打包/config/logs/data,scp传输后在目标机创建目录、解压、load镜像,最后按原-v/-p/-e参数run启动。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

将OpenClaw Docker部署从旧服务器完整迁移到新服务器,需同步镜像、容器配置、挂载数据卷及运行时参数,确保服务启动后行为与原环境一致。
确认源服务器上的OpenClaw运行状态和依赖结构
执行 docker ps -a | grep -i openclaw 查看容器是否在运行,记录容器名(如 openclaw-api)、ID、状态及端口映射;若容器已退出,用 docker inspect openclaw-api 提取关键字段:Mounts(确认宿主机挂载路径,如 /data/openclaw/config)、NetworkSettings.Ports(如 "8080/tcp": [{"HostPort": "8080"}])、Env(环境变量,含数据库地址、密钥等)。
这一步必须做,否则后续无法还原网络绑定和数据路径——【漏掉 Mounts 会导致迁移后容器启动失败或配置丢失】。
导出镜像并打包关联文件
方法一:直接保存镜像(推荐)
运行 docker save -o openclaw-api.tar openclaw/api:v2.4.1(镜像名以 docker images 输出为准);若使用本地构建镜像且无 tag,先 docker commit openclaw-api openclaw/api:manual-backup 再保存。
方法二:同时导出所有相关镜像
若 OpenClaw 依赖 PostgreSQL、Redis 等独立容器,用 docker save $(docker images --format "{{.Repository}}:{{.Tag}}" | grep -E "openclaw|postgres|redis") -o openclaw-full.tar 打包全部镜像,避免漏传。
额外打包:
进入 /data/openclaw/ 目录,执行 tar -czf openclaw-data.tgz config/ logs/ data/ ——注意必须包含 config/ 下的 application.yml 和证书目录,否则新服务器启动会报配置缺失错误。
自动备份 OpenClaw 整体配置到远程存储(支持任意 rclone 后端:COS、S3、FTP、SFTP、WebDAV等)。 触发场景: - 创建/配置自动备份任务 - 设置备份周期、保留份数、目标目录 - 手动触发备份 - 查看/恢复备份 - OpenClaw 运行异常时的提醒
传输文件到目标服务器
第一步:用 scp 将三类文件一次性推送到新服务器相同父路径scp openclaw-api.tar openclaw-data.tgz user@192.168.50.100:/home/docker/
第二步:登录目标服务器,创建标准目录结构mkdir -p /data/openclaw/{config,logs,data}
这一步不能跳过,【Docker run 时若宿主机目录不存在,部分版本会静默失败而非自动创建】。
第三步:解压配置与数据cd /home/docker && tar -xzf openclaw-data.tgz -C /data/openclaw/
在目标服务器加载镜像并启动容器
① 加载镜像:docker load -i /home/docker/openclaw-api.tar
② 验证镜像存在:docker images | grep openclaw,确认 REPOSITORY 和 TAG 正确
③ 启动容器(严格复刻原参数):docker run -d \--name openclaw-api \-p 8080:8080 \-v /data/openclaw/config:/app/config \-v /data/openclaw/logs:/app/logs \-v /data/openclaw/data:/app/data \-e SPRING_PROFILES_ACTIVE=prod \--restart=unless-stopped \openclaw/api:v2.4.1
注意:-v 路径必须与源服务器 docker inspect 中的 Source 字段完全一致,否则容器内程序读不到配置;环境变量 -e 项不可遗漏,否则可能降级为默认开发配置。
④ 检查容器日志确认就绪:docker logs -f openclaw-api | grep "Started Application"










