argus/src/metric/tests/scripts/load-images.sh

86 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# 镜像加载脚本
# 用于从 tar 文件加载 Docker 镜像
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TEST_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
INPUT_DIR="${1:-$TEST_DIR/images-cache}"
echo "=========================================="
echo " Docker 镜像加载脚本"
echo "=========================================="
echo ""
echo "输入目录: $INPUT_DIR"
echo ""
# 检查输入目录是否存在
if [ ! -d "$INPUT_DIR" ]; then
echo "错误: 目录不存在: $INPUT_DIR"
exit 1
fi
# 查找所有tar文件并加载
total=0
success=0
failed=0
# 查找目录下所有.tar文件
tar_files=($(find "$INPUT_DIR" -name "*.tar" -type f 2>/dev/null | sort))
if [ ${#tar_files[@]} -eq 0 ]; then
echo "错误: 在目录 $INPUT_DIR 中未找到任何 .tar 文件"
exit 1
fi
echo "找到 ${#tar_files[@]} 个镜像文件:"
for tar_file in "${tar_files[@]}"; do
echo " - $(basename "$tar_file")"
done
echo ""
for tar_file in "${tar_files[@]}"; do
total=$((total + 1))
tar_filename=$(basename "$tar_file")
echo "[$total] 处理: $tar_filename"
# 强制加载,不检查镜像是否已存在
echo " 加载镜像..."
if docker load -i "$tar_file"; then
echo " 加载成功: $tar_filename"
success=$((success + 1))
else
echo " 加载失败: $tar_filename"
failed=$((failed + 1))
fi
echo ""
done
echo "=========================================="
echo " 加载完成"
echo "=========================================="
echo ""
echo "统计:"
echo " 总计: $total"
echo " 成功: $success"
echo " 失败: $failed"
echo ""
# 显示当前所有镜像
echo "当前所有镜像:"
docker images
echo ""
if [ $failed -gt 0 ]; then
echo "部分镜像加载失败,请检查!"
exit 1
fi
if [ $success -gt 0 ]; then
echo "镜像加载成功!"
fi