Docker镜像备份与复原

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!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值