docker-backup


1. 备份容器数据卷(Volumes)

查找数据卷:

1
docker inspect <container_name_or_id> | grep Mounts -A 10

你可以看到容器挂载的 volume 路径和信息。

备份 Volume 内容:
假设 Volume 名为 my_volume

1
docker run --rm -v my_volume:/volume -v $(pwd):/backup ubuntu tar czvf /backup/my_volume.tar.gz -C /volume .

这样会把 volume 的内容压缩到当前目录下 my_volume.tar.gz 文件。


2. 备份容器镜像

获取当前容器的镜像名称:

1
docker ps --no-trunc

例如:my_image:latest

导出镜像:

1
docker save -o my_image.tar my_image:latest

3. 导出容器配置

由于 docker export 只会导出容器文件系统,不包含端口、环境变量等配置,推荐用 docker-compose 管理,保持配置可移植。如果没有 compose,可以自己导出相关参数:

查看容器启动参数:

1
docker inspect <container_name_or_id>

1
docker run --rm klokantech/ksdump <container_name_or_id>

也可以用 docker-capture 工具简化命令导出。

建议手动记录下来或写成 docker-compose.yml


4. 迁移到新主机

A. 拷贝所有备份文件到新主机
此处用 scp/sftp 等工具即可。

B. 恢复镜像:

1
docker load -i my_image.tar

C. 恢复数据卷内容:

  1. 在新主机创建 Volume:
    1
    docker volume create my_volume
  2. 解压还原:
    1
    docker run --rm -v my_volume:/volume -v $(pwd):/backup ubuntu tar xzvf /backup/my_volume.tar.gz -C /volume

D. 根据配置参数/compose 文件重建容器:

  • 如果有 compose 文件,直接运行
    1
    docker-compose up -d
  • 如果单独用命令,可以参考之前记录的启动参数进行 docker run

5. 其它场景

  • 也可用 Docker 的export/import。不过这样会丢失 Volume 挂载的数据和部分元信息,不推荐用于迁移重要服务
  • 生产环境建议所有重要数据都用 Volume 持久化,避免直接将数据写入容器本地。

小结(简要步骤)

  1. 导出镜像docker save
  2. 备份 volume:用 tar 归档
  3. 记录/导出容器配置
  4. 文件传输到目标主机
  5. 恢复镜像docker load
  6. 恢复 volume:tar 解压
  7. 按配置重建容器

这样即可在新主机完整还原运行环境和数据。


docker-backup
https://mfzzf.github.io/2025/04/17/docker-backup/
作者
Mzzf
发布于
2025年4月17日
许可协议