1.之前Ubuntu系统Desktop被我我自己整蹦了,所以专门整一个镜像备份脚步以防万一
2.可以魔改,比如定时备份
一、备份脚本
#!/bin/bash
BACKUP_DIR="/opt/images"
DOCKER_HUB="registry.docker.io:5000" #自己私人的本地镜像仓库
IMAGE_LIST=$(docker images -q --format '{{.Repository}}:{{.Tag}}' | grep "${DOCKER_HUB}") #查询自己打标已经上传的镜像
mkdir ${BACKUP_DIR}
docker images --format "{{.Repository}}:{{.Tag}} ---> {{.ID}}" > ${BACKUP_DIR}/images_list.txt #镜像清单
echo "start..."
for image in $IMAGE_LIST;
do
BACKUP_FILE="${BACKUP_DIR}/$(echo $image | tr '/' '_' | tr ':' '-').tar" #把特殊字符替换掉
echo "$image is backuping to $BACKUP_FILE..."
docker save -o $BACKUP_FILE $image #备份
if [[ $? -eq 0 ]]; then
echo "$BACKUP_FILE backuped successfully"
else
echo "$image backuped failed"
fi
done
echo "finished!"
二、还原镜像
#!/bin/bash
BACKUP_DIR="/opt/images"
IMAGES=$(find ${BACKUP_DIR} -maxdepth 1 -type f ! -name "*.txt" -exec echo {} \;) #查询备份好的镜像文件
echo "start..."
for image in $IMAGES;
do
echo "$image is restoring..."
docker load -i $(echo $image | tr '_' '/' | tr '-' ':') #还原
if [[ $? -eq 0 ]]; then
echo "$BACKUP_FILE restroed successfully"
else
echo "$image_id restored failed"
fi
done
echo "finished!"