2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Docker 镜像批量导入导出脚本

Docker 镜像批量导入导出脚本

时间:2023-03-16 04:42:26

相关推荐

Docker 镜像批量导入导出脚本

Docker 镜像批量导入导出脚本

docker 批量导出镜像的sh文件,export-images.sh

#导出全部的镜像;sh export-img.sh#导出部分镜像LIST=“ d235b 201c7a 201c7a”sh export-img.sh注意:LIST赋值Docker Images ID ,多个镜像ID通过空格隔离;执行脚本是只会导出定义ID的镜像

export-image.sh内容

LIST=""TXT=/root/tmp.txtBAKDIR=/usr/local/bakLOGDIR=/usr/local/bak/logLOGFILE=$LOGDIR/bak.`date +%Y%m%d`.log[ ! -d $BAKDIR ] && mkdir -p $BAKDIR[ ! -d $LOGDIR ] && mkdir -p $LOGDIRif [ -n "$LIST" ]thenfor list in $LISTdoRESLIST=`docker images |grep $list | awk '{print $1}'`for reslist in $RESLISTdoRESTAG=`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>&1donedoneelseREC=`docker images |awk '{print $1,$2,$3}'|sed 1d >> $TXT`RESLIST=`cat $TXT|awk '{print $1}'`for reslist in $RESLISTdoRESTAG=`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>&1done/usr/bin/rm -f $TXTfiif [ -s $LOGFILE ]thenecho -e "\033[31mERROR:Images Backup Failed!\033[0m"echo -e "\033[31mPlease View The Log Lile : $LOGFILE\033[0m"else/usr/bin/rm -f $LOGFILEfi

docker 批量导入镜像的sh文件

支持传参数导入

# 注意:多个tar文件使用空格分隔;sh import.sh "nacos.tar redis.tar"

支持脚本定义导入镜像名称

vi import.shSTATE="ImgName1 ImgName2 ImgName3 ...."sh import.sh

支持指定目录导入镜像

vi import.shTARDIR="/usr/local/bak"sh import.sh

支持镜像导入前备份当前镜像

# 注意:需要备份时输入字母Y,不区分大小写,不需要备份没有严格的指定,# 只要不是字母Y都可以作为否定备份;# 如果同时在脚本中指定导入镜像,又在指定脚本时指定导入镜像名称,# 默认使用以脚本定义导入镜像名称;sh import.shWhether to backup the current images[y/n]:[y/Y]

import.sh 内容

#!/bin/shSTATE=""RECEIVE=$1TARDIR="/root"SUFFIX="*.tar"LIST=`ls $TARDIR/$SUFFIX`LOGFILE=$TARDIR/import.error.`date +%Y%m%d`.logBAKLOGFILE=$TARDIR/bak.`date +%Y%m%d`.logSTATEIMPORT() {for i in $STATEdo/usr/bin/docker load -i $i >/dev/null 2>>$LOGFILEdone}RECEIVEIMPORT() {for i in $RECEIVEdo/usr/bin/docker load -i $i >/dev/null 2>>$LOGFILEdone}LISTIMPORT() {for i in $LISTdo/usr/bin/docker load -i $i >/dev/null 2>>$LOGFILEdone}IMAGESBAK(){IMGINFO=`docker images |awk '{print $1,$2,$3}'|sed 1d >> $TARDIR/tmp.txt`RESLIST=`/usr/bin/cat $TARDIR/tmp.txt |awk '{print $1}' `for i in $RESLISTdoRESTAG=`docker images |grep "$i" |awk '{a=$1":"$2;print a }'`BAKNAME=`docker images |grep "$i" |awk '{a=$1":"$2;print a }'|sed 's/\//_/g'`/usr/bin/docker save $RESTAG -o $TARDIR/$BAKNAME_`date +%Y%m%d`.tar >/dev/null 2>>$BAKLOGFILEdoneif [ -s $BAKLOGFILE ]thenecho -e "\033[31mERROR:Images Backup Failed!\033[0m"echo -e "\033[31mPlease View The Log Lile : $BAKLOGFILE\033[0m"else/usr/bin/rm -f $BAKLOGFILEfi/usr/bin/rm -f $TARDIR/tmp.txt}/usr/bin/rm -f $TARDIR/*.logread -p "Whether to backup the current images[y/n]:" INPUTif [[ $INPUT = "y" ]] || [[ $INPUT = "Y" ]]thenIMAGESBAKelseif [[ -n "$RECEIVE" ]] || [[ -n "$STATE" ]]thenif [ -n "$RECEIVE" ]thenRECEIVEIMPORTelseSTATEIMPORTfielseLISTIMPORTfifi##ERROR Outputif [ -s $LOGFILE ]thenecho -e "\033[31mERROR:Images Import Failed!\033[0m"echo -e "\033[31mPlease View The Log Lile : $LOGFILE\033[0m"else/usr/bin/rm -f $LOGFILEfi

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。