You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

保存Docker容器后无法重新启动的问题求助

解决Docker容器跨机器迁移的问题

核心问题

docker save/docker load仅处理镜像文件,容器的运行状态(比如Postgres的数据库数据、pgAdmin的配置)、启动参数、网络/数据卷关联都不会被保存,这是你无法启动容器的关键原因。

正确迁移步骤

1. 备份容器数据卷

Postgres和pgAdmin的核心数据都存储在Docker数据卷中,先在原机器导出数据:

  • 查看当前容器关联的数据卷:
    docker volume ls
    
  • 导出单个数据卷(比如Postgres的数据卷postgres_data):
    docker run --rm -v postgres_data:/data -v $(pwd):/backup alpine tar cvzf /backup/postgres_data.tar.gz -C /data .
    
    用同样的命令导出pgAdmin对应的数据卷(比如pgadmin_data)。

2. 迁移镜像(复用你已完成的操作)

原机器保存镜像:

docker save -o postgres_pgadmin_images.tar postgres:xxx dpage/pgadmin4:xxx

目标机器加载镜像:

docker load -i postgres_pgadmin_images.tar

3. 迁移docker-compose.yml配置

把原机器的docker-compose.yml完整复制到目标机器,确保文件内的镜像标签、数据卷名称、环境变量、端口映射和原配置完全一致。

4. 在目标机器恢复数据卷

  • 创建和原机器同名的数据卷:
    docker volume create postgres_data
    docker volume create pgadmin_data
    
  • 导入备份的数据到对应数据卷:
    docker run --rm -v postgres_data:/data -v $(pwd):/backup alpine tar xvzf /backup/postgres_data.tar.gz -C /data
    
    用同样的命令恢复pgAdmin的数据卷。

5. 启动容器

在目标机器的docker-compose.yml所在目录执行:

docker compose up -d

常见排查点

  • 检查目标机器的Docker和docker-compose版本是否与原机器兼容,版本差异可能导致启动失败。
  • 查看容器日志定位具体错误:
    docker compose logs postgres
    docker compose logs pgadmin
    
  • 确认目标机器的端口未被其他进程占用(比如Postgres默认的5432端口)。

内容的提问来源于stack exchange,提问作者Ojotuno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:40:55