温馨提示×

Debian上Docker镜像如何备份

小樊
46
2025-11-19 08:43:27
栏目: 智能运维

Debian上Docker镜像备份与恢复

一、核心方法

  • 使用docker save将镜像导出为tar归档,适合完整备份与迁移;在目标主机用docker load恢复。示例:
    • 备份:docker save -o /backup/myimage.tar myimage:latest
    • 恢复:docker load -i /backup/myimage.tar
  • 若需将运行中容器的当前文件系统快照保存为镜像,可先docker commit生成新镜像,再用docker save备份;或直接用docker export导出容器文件系统并用docker import生成新镜像(注意:export/import不保留镜像历史与元数据,适合“只要当前文件系统”的场景)。

二、常用命令速查

目的 命令示例
备份单个镜像 docker save -o /backup/app.tar app:1.2
备份多个镜像到同一归档 docker save -o /backup/multi.tar app:1.2 db:14
压缩备份(推荐) docker save app:1.2 | gzip > app_1.2.tar.gz
从归档恢复镜像 docker load -i /backup/app.tar
从压缩归档恢复 docker load -i /backup/app_1.2.tar.gz
从容器创建新镜像再备份 docker commit <容器ID> app:snapshot && docker save -o app_snapshot.tar app:snapshot
仅导出容器文件系统 docker export -o container.tar <容器ID>
从容器快照导入为新镜像 cat container.tar | docker import - app:from_container
说明:压缩备份可显著减小体积,便于传输与存储;import不会保留原镜像层历史,仅生成新镜像。

三、自动化与批量备份脚本

  • 备份所有镜像为单独tar文件(并可选压缩):
    • 未压缩:for img in $(docker images --format ‘{{.Repository}}:{{.Tag}}’); do docker save -o “/backup/${img////_}.tar” “$img”; done
    • 压缩:for img in $(docker images --format ‘{{.Repository}}:{{.Tag}}’); do docker save “$img” | gzip > “/backup/${img////_}.tar.gz”; done
  • 备份所有镜像到同一归档(便于一次性拷贝):docker save $(docker images --format ‘{{.Repository}}:{{.Tag}}’ | grep -v ‘’) -o /backup/all_images.tar
  • 恢复示例:cat /backup/all_images.tar | docker load;或针对压缩包:docker load -i /backup/app_1.2.tar.gz 提示:将备份目录(如**/backup**)挂载到外部磁盘或网络存储,避免占用系统盘空间。

四、注意事项与最佳实践

  • 保留镜像历史与标签请选择save/load;仅需容器当前文件系统快照时使用export/import
  • 镜像可能很大,确保磁盘空间充足;传输大文件后可用校验手段(如 gzip -t)验证完整性。
  • 导入后若标签显示为**,使用docker tag <镜像ID> 名称:标签**补齐。
  • 有网络时优先推送到Docker Hub私有仓库(docker tag + docker push),便于版本管理与团队协作;离线环境使用save/load更稳妥。
  • 为镜像建立清晰的命名与标签规范(如语义化版本、构建号),避免仅用latest;定期做恢复演练确保备份可用。

0