打包镜像
#!/bin/bash
set -eo pipefail
# 定义输出目录(可按需修改)
OUTPUT_DIR="./dify_images"
mkdir -p "$OUTPUT_DIR"
# 获取所有运行中容器使用的唯一镜像列表(自动去重)
IMAGE_LIST=$(docker ps --format "{{.Image}}" | sort -u)
# 批量导出镜像(保留REPOSITORY:TAG元数据)
for IMAGE in $IMAGE_LIST; do
# 处理镜像名称中的特殊字符(将/替换为-,:替换为-)
FILENAME=$(echo "$IMAGE" | sed 's/\//-/g; s/:/-/g').tar
SAVE_PATH="$OUTPUT_DIR/$FILENAME"
echo "正在导出镜像: $IMAGE => $SAVE_PATH"
docker save -o "$SAVE_PATH" "$IMAGE"
done
echo "所有镜像已保存至目录: $OUTPUT_DIR"
加载镜像
# 创建加载脚本 load_images.sh
tee load_images.sh <<'EOF'
#!/bin/bash
set -eo pipefail
IMAGES_DIR="./dify_images"
for TAR_FILE in "$IMAGES_DIR"/*.tar; do
echo "正在加载镜像: $TAR_FILE"
docker load -i "$TAR_FILE"
done
echo "所有镜像已加载完成!"
EOF
# 执行加载
chmod +x load_images.sh && ./load_images.sh