备份Docker镜像主要有以下几种方式:
方法一:docker save / docker load(推荐)
备份单个镜像
bash
复制
# 保存镜像为tar文件(包含所有标签)
docker save -o backup.tar <镜像名>:<标签>
# 示例
docker save -o learn-server.tar blue/learn-server:latest
备份多个镜像
bash
复制
# 将多个镜像打包到一个文件
docker save -o multiple-images.tar image1:latest image2:v1.0
# 示例
docker save -o my-images.tar blue/learn-server nginx:latest mysql:5.7
恢复镜像
bash
复制
docker load -i backup.tar
压缩优化:
bash
复制
# 备份时直接压缩(可减小50-70%体积)
docker save <镜像名> | gzip > backup.tar.gz
# 恢复时解压
gunzip -c backup.tar.gz | docker load
方法二:推送到私有仓库
bash
复制
# 1. 给镜像打标签
docker tag blue/learn-server:latest my-registry.com:5000/blue/learn-server:backup
# 2. 推送到私有仓库
docker push my-registry.com:5000/blue/learn-server:backup
# 3. 恢复时从仓库拉取
docker pull my-registry.com:5000/blue/learn-server:backup
方法三:备份Docker存储目录(不推荐)
bash
复制
# 停掉Docker服务
sudo systemctl stop docker
# 备份整个存储目录(需root权限)
sudo tar -czf docker-backup.tar.gz /var/lib/docker
# 重启Docker
sudo systemctl start docker
注意:此方法风险高,只适用于完整环境迁移
方法四:使用第三方工具
-
Portainer:图形化管理,支持导出镜像
-
Skopeo:无需Docker守护进程,支持不同仓库间复制
最佳实践建议
表格
复制
| 场景 | 推荐方法 | 命令示例 |
|---|---|---|
| 单机备份 | docker save | docker save -o app.tar app:v1.0 |
| 团队共享 | 私有仓库 | docker push registry/app:tag |
| 迁移服务器 | save+load | docker save app:v1.0 | ssh new-server "docker load" |
| 生产环境 | 私有仓库+版本标签 | 使用Harbor/Nexus管理 |
注意事项:
-
docker save会保留镜像历史和元数据 -
导出文件可能很大,建议压缩
-
定期备份重要镜像
-
私有仓库方式更灵活,适合持续集成
686

被折叠的 条评论
为什么被折叠?



