1. 批量保存镜像到 .tar 文件
bash
#!/bin/bash
# 保存目录
SAVE_DIR=/root/docker_images_backup
mkdir -p $SAVE_DIR
# 获取本地所有镜像列表 (Repository:Tag + IMAGE ID)
docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | while read img id; do
# 如果 TAG 是 <none>,使用 IMAGE ID 代替
if [[ $img == *"<none>"* ]]; then
img=$id
fi
# 生成文件名,将 / 和 : 替换为 _
filename=$(echo $img | sed 's/[\/:]/_/g').tar
echo "Saving $img -> $SAVE_DIR/$filename"
# 执行 docker save 导出镜像
docker save -o $SAVE_DIR/$filename $img
done
✅ 功能说明:
自动处理
<none>标签的镜像。每个镜像导出为独立 tar 文件,命名格式
REPOSITORY_TAG.tar。方便迁移和备份。
2. 批量加载镜像
bash
#!/bin/bash
# 镜像 tar 文件目录
LOAD_DIR=/root/docker_images_backup
# 遍历目录下所有 tar 文件
for tarfile in $LOAD_DIR/*.tar; do
echo "Loading $tarfile ..."
docker load -i $tarfile
done
✅ 功能说明:
自动加载目录下所有
.tar文件到本地 Docker。可以用于迁移到新服务器或重建环境。
3. 使用示例
- 保存镜像:
bash
bash save_all_images.sh
- 在新服务器加载镜像:
bash
bash load_all_images.sh