Docker镜像备份到U盘实操
简介
在树莓派等ARM设备上运行Docker时,镜像体积往往不小,而系统又多部署在TF卡或小容量SSD 上。一旦需要重装系统、迁移环境,或者做一次“真正可靠”的离线备份,如何把Docker镜像安全、完整地导出到U盘,就成了一个绕不开的问题。
本文基于我在树莓派4B + Linux环境下的真实操作记录,完整展示了Docker镜像从系统导出到exFAT格式U盘、再导回新系统的全过程,并重点说明了挂载方式、权限设置等容易踩坑的细节,确保备份文件可写、可读、可恢复。
目的
本文的目的在于整理并验证一套在 Linux(树莓派)环境下可重复、可复用的 Docker 镜像备份流程,具体包括:
- 将已有Docker镜像完整导出为本地
.tar文件,实现脱离网络的离线备份 - 使用
exFAT格式U盘作为备份介质,解决默认自动挂载带来的权限与写入问题 - 在新系统或新设备上通过
docker load原样恢复镜像,确保镜像标签与IMAGE ID不发生变化
通过该流程,可以在系统重装、设备迁移或故障恢复时,快速还原Docker运行环境,避免重复拉取镜像或依赖外部网络。
导出Docker镜像到U盘
- 插入U盘,查看设备名(通常是sda1或sdb1)
- 执行命令
lsblk![]()
- 执行命令
- 先卸载devmon的挂载
- 执行
sudo umount /media/devmon/DockerIMGs![]()
- 执行
- 准备一个“正式”的挂载点
- 执行
sudo mkdir -p /mnt/docker-usb![]()
- 执行
- 用exFAT正确姿势挂载(关键在这里)
- 执行
1
2
3sudo mount -t exfat \
-o uid=1000,gid=1000,umask=022 \
/dev/sdb1 /mnt/docker-usb![]()
![]()
- 执行
- 创建备份文件夹
- 进入操作目录
cd /mnt/docker-usb - 创建备份文件夹
sudo mkdir docker_images_backup![]()
- 进入操作目录
- 导出镜像到U盘
- 执行备份命令
- 请替换为你的实际目录路径与镜像名
1
2sudo docker save -o /mnt/docker-usb/docker_images_backup/transmission_latest.tar lscr.io/linuxserver/transmission:latest
sudo docker save -o /mnt/docker-usb/docker_images_backup/cloudreve_4.10.1-arm.tar cloudreve:4.10.1-arm![]()
- 出完成后检查文件大小
- 执行
ls -lh /mnt/docker-usb/docker_images_backup![]()
- 执行
- 安全卸载U盘
- 执行
sudo umount /mnt/docker-usb
- 执行
导回Docker镜像到Linux系统
- 插入U盘
- 系统会自动挂载(通常到/mnt/docker-usb或类似路径,你之前就是这个)
- 确认U盘挂载路径并查看备份文件
- 执行
lsblk - 或
ls /mnt/docker-usb/docker_images_backup
- 执行
- 导入镜像到Docker
- 执行
1
sudo docker load -i /media/devmon/ImgBackU/docker_images_backup/openwrt-aarch64.tar
- 导入过程中会看到类似输出
Loaded image: buddyfly/openwrt-aarch64:latest![]()
- 执行
- 验证镜像是否成功导入
- 执行查看
sudo docker images - 你应该能看到
buddyfly/openwrt-aarch64:latest和其他镜像又回来了,和以前一模一样(包括IMAGE ID)![]()
- 执行查看
- 完成后可以安全卸载U盘(可选)
- 执行
sudo umount /mnt/usb - 然后拔掉U盘
- 执行
参考资料
- Docker官方文档 - docker save
- Docker官方文档 - docker load
- Linux mount exFAT 文件系统(解释uid/gid/umask参数用法)









