docker镜像备份恢复_Docker 镜像批量备份(导出)

脚本作用

1.批量导出Docker Images;

2.部分导出,通过指定Docker Images ID 到脚本“LIST”变量;

3.支持相同ID,不同REPOSITORY名称备份;

例如:

docker images

kry1702/coredns 1.3.1 eb516548c180 5 months ago 40.3MB

k8s.gcr.io/coredns 1.3.1 eb516548c180 5 months ago 40.3MB

注意:备份文件名称格式为:kry1702_coredns:1.3.1.tar

主要是解决相同ID,不同REPOSITORY名称,如果提取“/”最右边为备份文件名称格式导致备份文件冲突,以上为例备份文件名称格式为:coredns:1.3.1.tar

例如:

docker images

kry1702/coredns 1.3.1 eb516548c180 5 months ago 40.3MB

k8s.gcr.io/coredns 1.3.1 eb516548c180 5 months ago 40.3MB

运行实例

#导出全部的镜像;

sh ExportImg.sh

#导出部分镜像

LIST=“ d235b 201c7a 201c7a”

sh ExportImg.sh

注意:LIST赋值Docker Images ID ,多个镜像ID通过空格隔离;执行脚本是只会导出定义ID的镜像;

镜像还原(任选一种)

docker load --input xxx.tar

docker load < xx.tar

docker load -i xx.tar

脚本内容

LIST=""

TXT=/root/tmp.txt

BAKDIR=/usr/local/bak

LOGDIR=/usr/local/bak/log

LOGFILE=$LOGDIR/bak.`date +%Y%m%d`.log

[ ! -d $BAKDIR ] && mkdir -p $BAKDIR

[ ! -d $LOGDIR ] && mkdir -p $LOGDIR

if [ -n "$LIST" ]

then

for list in $LIST

do

RESLIST=`docker images |grep $list | awk '{print $1}'`

for reslist in $RESLIST

do

RESTAG=`docker images |grep "$reslist" |awk '{a=$1":"$2;print a }'`

BAKNAME=`docker images |grep "$reslist" |awk '{a=$1":"$2;print a }'|sed 's/\//_/g'`

/usr/bin/docker save $RESTAG -o $BAKDIR/$BAKNAME.tar >> $LOGFILE 2>&1

done

done

else

REC=`docker images |awk '{print $1,$2,$3}'|sed 1d >> $TXT`

RESLIST=`cat $TXT|awk '{print $1}'`

for reslist in $RESLIST

do

RESTAG=`docker images |grep "$reslist" |awk '{a=$1":"$2;print a }'`

BAKNAME=`docker images |grep "$reslist" |awk '{a=$1":"$2;print a }'|sed 's/\//_/g'`

/usr/bin/docker save $RESTAG -o $BAKDIR/$BAKNAME.tar >> $LOGFILE 2>&1

done

/usr/bin/rm -f $TXT

fi

if [ -s $LOGFILE ]

then

echo -e "\033[31mERROR:Images Backup Failed!\033[0m"

echo -e "\033[31mPlease View The Log Lile : $LOGFILE\033[0m"

else

/usr/bin/rm -f $LOGFILE

fi

参考网址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值