批量导出docker镜像
#!/bin/bash
# 创建备份目录
BACKUP_DIR="docker_images_single_backup"
mkdir -p "$BACKUP_DIR"# 遍历所有镜像
docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | while read -r line; do
# 提取镜像名称和ID
REPO_TAG=$(echo "$line" | awk '{print $1}')
IMAGE_ID=$(echo "$line" | awk '{print $2}')# 处理镜像名称中的特殊字符(替换 '/' 和 ':')
CLEAN_NAME=$(echo "$REPO_TAG" | sed 's|[/:]|_|g')# 处理无标签镜像(使用ID)
if [[ "$REPO_TAG" == *":<none>" ]]; then
OUTPUT_FILE="${BACKUP_DIR}/${IMAGE_ID}.tar"
docker save -o "$OUTPUT_FILE" "$IMAGE_ID"
echo "Saved: $IMAGE_ID -> $OUTPUT_FILE"
else
OUTPUT_FILE="${BACKUP_DIR}/${CLEAN_NAME}.tar"
docker save -o "$OUTPUT_FILE" "$REPO_TAG"
echo "Saved: $REPO_TAG -> $OUTPUT_FILE"
fi
doneecho "All images saved to directory: $BACKUP_DIR"