关于node节点的re镜像全部打包,进行迁移
#!/bin/bash
# 正确的镜像打包脚本# 定义输出文件名
OUTPUT_DIR="re_images_$(date +%Y%m%d_%H%M%S)"
OUTPUT_TAR="${OUTPUT_DIR}.tar"# 获取所有 re 开头的镜像
IMAGES=$(docker images --format "{{.Repository}}:{{.Tag}}" | grep -E '^re[^/]*/')# 创建临时目录
mkdir -p "$OUTPUT_DIR"# 生成加载脚本
cat > "$OUTPUT_DIR/load-images.sh" << 'EOF'
#!/bin/bash
set -e
echo "开始加载镜像..."
for img in *.tar; doecho "正在加载 $img..."docker load -i "$img"
done
echo "所有镜像加载完成!"
EOF
chmod +x "$OUTPUT_DIR/load-images.sh"# 逐个保存镜像
INDEX=1
TOTAL=$(echo "$IMAGES" | wc -l)
for IMAGE in $IMAGES; doecho "[$INDEX/$TOTAL] 正在保存: $IMAGE"docker save "$IMAGE" > "$OUTPUT_DIR/image_${INDEX}.tar"((INDEX++))
done# 创建清单文件
echo "$IMAGES" > "$OUTPUT_DIR/image-manifest.txt"# 打包目录
tar -cvf "$OUTPUT_TAR" "$OUTPUT_DIR"# 清理并输出结果
rm -rf "$OUTPUT_DIR"
echo -e "\n打包完成!请使用以下命令加载:"
echo "1. tar -xvf ${OUTPUT_TAR}"
echo "2. cd ${OUTPUT_DIR}"
echo "3. ./load-images.sh"
解压文件
tar -xf re_images_*.tar
for f in *.tar; do docker load -i "$f"; done