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

如何完整备份并迁移含数据的PostgreSQL Docker容器至另一设备

完整备份并恢复PostgreSQL Docker容器的两种方法

方法一:使用pg_dumpall全量备份(推荐,跨版本兼容)

备份步骤(源设备)

  • 进入运行中的PostgreSQL容器:
    docker exec -it <你的容器名或容器ID> bash
    
  • 在容器内执行全量备份命令,导出所有数据库的结构与数据到文件:
    pg_dumpall -U postgres > /var/lib/postgresql/data/full_backup.sql
    
    注:postgres为默认超级用户,若使用自定义用户请替换;/var/lib/postgresql/data/是容器默认数据存储目录,确保该目录可被外部访问。
  • 退出容器,将备份文件复制到本地主机:
    docker cp <容器名或ID>:/var/lib/postgresql/data/full_backup.sql ./
    

恢复步骤(目标设备)

  • 启动同版本的PostgreSQL容器并挂载数据卷:
    docker run -d --name postgres-restore -v postgres-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=<你的密码> postgres:9.6.24
    
  • 将本地备份文件复制到目标容器内:
    docker cp ./full_backup.sql postgres-restore:/var/lib/postgresql/data/
    
  • 进入容器执行恢复命令:
    docker exec -it postgres-restore bash
    psql -U postgres -f /var/lib/postgresql/data/full_backup.sql
    
  • 恢复完成后重启容器:
    docker restart postgres-restore
    

方法二:直接复制Docker数据卷(快捷高效,同环境适用)

备份步骤(源设备)

  • 先停止运行中的PostgreSQL容器,避免数据写入不一致:
    docker stop <容器名或ID>
    
  • 导出数据卷为压缩包:
    docker run --rm -v <你的数据卷名>:/data -v $(pwd):/backup ubuntu tar cvf /backup/postgres_data.tar /data
    
    注:可通过docker volume ls查看数据卷名称。

恢复步骤(目标设备)

  • 创建空数据卷:
    docker volume create postgres-data-new
    
  • 将压缩包导入新数据卷:
    docker run --rm -v postgres-data-new:/data -v $(pwd):/backup ubuntu tar xvf /backup/postgres_data.tar -C / --strip-components=1
    
  • 使用新数据卷启动PostgreSQL容器:
    docker run -d --name postgres-restore -v postgres-data-new:/var/lib/postgresql/data -e POSTGRES_PASSWORD=<你的密码> postgres:9.6.24
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:12:38