你可以使用以下 Shell 脚本,批量将当前目录下所有的 .tar
镜像文件通过 docker load -i
导入到本地 Docker 环境中,并显示进度和结果。
✅ 脚本功能:
- 自动查找当前目录下所有
.tar
文件 - 逐个执行
docker load -i xxx.tar
- 显示成功/失败状态
- 跳过非文件或非
.tar
文件 - 支持中文提示和日志输出
📜 批量导入镜像脚本(load_images.sh
)
#!/bin/bash# 脚本名称: load_images.sh
# 功能: 批量导入 Docker 镜像 tar 包
# 作者: Assistant
# 日期: $(date +%Y-%m-%d)echo "=========================================="
echo " 开始批量导入 Docker 镜像 (docker load)"
echo " 当前时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "=========================================="# 定义统计变量
success_count=0
fail_count=0
total_count=0# 查找所有 .tar 文件
for tar_file in *.tar; do# 检查文件是否存在(防止无匹配时原样输出 *.tar)if [ ! -f "$tar_file" ]; thenecho "⚠️ 当前目录没有找到任何 .tar 文件。"exit 0fi# 检查是否为普通文件if [ -f "$tar_file" ]; thentotal_count=$((total_count + 1))echoecho "📦 正在导入: $tar_file"# 执行 docker loadif docker load -i "$tar_file" > /tmp/docker_load_tmp.log 2>&1; thenecho "✅ 成功导入: $tar_file"success_count=$((success_count + 1))elseecho "❌ 导入失败: $tar_file"echo " 错误信息:"cat /tmp/docker_load_tmp.log | sed 's/^/ | /'fail_count=$((fail_count + 1))fifi
done# 删除临时日志文件
rm -f /tmp/docker_load_tmp.logecho
echo "=========================================="
echo "📊 导入完成 summary:"
echo " 总共文件数: $total_count"
echo " 成功: $success_count"
echo " 失败: $fail_count"
echo "=========================================="# 如果有失败,给出提示
if [ $fail_count -gt 0 ]; thenecho "💡 建议检查:"echo " - 是否已安装 Docker (systemctl status docker)"echo " - 是否有权限 (可尝试 sudo)"echo " - 文件是否损坏 (file *.tar)"exit 1
fiexit 0
🔧 使用方法:
- 将上述脚本保存为
load_images.sh
vim load_images.sh
# 粘贴内容后保存
- 添加可执行权限
chmod +x load_images.sh
- 运行脚本(确保你在存放 .tar 镜像的目录中)
./load_images.sh
⚠️ 如果你没有 Docker 权限,可能需要使用
sudo
:sudo ./load_images.sh
🖼️ 示例输出:
==========================================开始批量导入 Docker 镜像 (docker load)当前时间: 2025-10-13 11:30:00
==========================================📦 正在导入: alarm-handler-v3.4.0_20250725104119.tar
✅ 成功导入: alarm-handler-v3.4.0_20250725104119.tar📦 正在导入: algorithm-capture-v3.4.0_20250725104119.tar
✅ 成功导入: algorithm-capture-v3.4.0_20250725104119.tar...==========================================
📊 导入完成 summary:总共文件数: 18成功: 18失败: 0
==========================================
💡 补充建议:
- 可以用
docker images
验证是否全部加载成功。 - 若文件较多或较大,导入过程可能需要几分钟,请耐心等待。
- 如需加速,可考虑并行导入(不推荐,容易出错),当前为安全串行方式。