实现原理
1. 编写镜像清单文件中每行保存一个镜像地址
2. 通过循环遍历镜像清单文件中的内容,实现批量导出导入镜像
准备镜像清单文件
文件名/home/image_list.txt
centos:7.9
ubuntu: 18.04
nginx:1.24.0-alpine
openjdk:8-alpine
批量导出镜像为离线包
脚本文件docker-save-images.sh
#!/bin/bash
# docker-save-images.sh
# 批量导出docker镜像,保存为tar.gz
# 指定包含镜像名称的文件
file_list="/home/image_list.txt"
# 遍历文件列表中的每个镜像名称
while IFS= read -r image; do
# 检查镜像是否存在
if docker images -q "$image" >/dev/null 2>&1; then
# 导出镜像
docker save -o "$image.tar.gz" "$image"
# 打印导出成功的消息
echo "Successfully save image: $image"
fi
done < "$file_list"
批量导入镜像离线包
脚本文件load-docker-images.sh
#!/bin/bash
# load-docker-images.sh
# 批量导入docker离线镜像包tar.gz
# 指定包含镜像文件路径的文本文件
file_list="/home/file_list.txt"
# 遍历文件列表中的每个文件
while IFS= read -r file; do
# 检查文件是否存在且为.tar文件
if [[ -f "$file" && "${file##*.}" == "tar.gz" ]]; then
# 加载镜像文件
docker load -i "$file"
# 打印导入成功的消息
echo "Successfully load image: $(basename -- "$file" .tar.gz)"
fi
done < "$file_list"