作用:主要目的用于批量鏡像導(dǎo)入;
1.支持傳參數(shù)導(dǎo)入
實例:
shimport.sh "pause_3.1.taretcd_3.3.10.tar"? 注意:多個tar文件使用空格分隔;
2.支持腳本定義導(dǎo)入鏡像名稱
實例:
vi import.sh
? STATE="ImgName1 ImgName2 ImgName3 ...."
? sh import.s
3.支持指定目錄導(dǎo)入鏡像
實例:
vi import.sh
? TARDIR="/usr/local/bak"
?sh import.sh
4.支持鏡像導(dǎo)入前備份當(dāng)前鏡像
sh import.sh
? Whether to backup the current images[y/n]:[y/Y]
注意:
需要備份時輸入字母Y点把,不區(qū)分大小寫屿附,不需要備份沒有嚴(yán)格的指定,只要不是字母Y都可以作為否定備份褒翰;
如果同時在腳本中指定導(dǎo)入鏡像匀泊,又在指定腳本時指定導(dǎo)入鏡像名稱,默認使用以腳本定義導(dǎo)入鏡像名稱;
5.腳本內(nèi)容:
#!/bin/sh
STATE=""
RECEIVE=$1
TARDIR="/root"
SUFFIX="*.tar"
LIST=`ls $TARDIR/$SUFFIX`
LOGFILE=$TARDIR/import.error.`date +%Y%m%d`.log
BAKLOGFILE=$TARDIR/bak.`date +%Y%m%d`.log
STATEIMPORT() {
for i in $STATE
do
/usr/bin/docker load -i $i >/dev/null 2>>$LOGFILE
done
}
RECEIVEIMPORT() {
for i in $RECEIVE
do
/usr/bin/docker load -i $i >/dev/null 2>>$LOGFILE
done
}
LISTIMPORT() {
for i in $LIST
do
/usr/bin/docker load -i $i >/dev/null 2>>$LOGFILE
done
}
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 $RESLIST
do
? ? RESTAG=`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>>$BAKLOGFILE
done
if [ -s $BAKLOGFILE ]
then
? ? echo -e "\033[31mERROR:Images Backup Failed!\033[0m"
? ? echo -e "\033[31mPlease View The Log Lile : $BAKLOGFILE\033[0m"
else
? ? /usr/bin/rm -f $BAKLOGFILE
fi
/usr/bin/rm -f $TARDIR/tmp.txt
}
/usr/bin/rm -f $TARDIR/*.log
read -p "Whether to backup the current images[y/n]:" INPUT
if [[ $INPUT = "y" ]] || [[ $INPUT = "Y" ]]
then
? ? IMAGESBAK
else
? ? if [[ -n "$RECEIVE" ]] || [[ -n "$STATE" ]]
? ? then
? ? ? ? if [ -n "$RECEIVE" ]
? ? ? ? then
? ? ? ? ? ? ? ? RECEIVEIMPORT
? ? ? ? else
? ? ? ? ? ? ? ? STATEIMPORT
? ? ? ? fi
? ? else
? ? ? ? LISTIMPORT
? ? fi
fi
##ERROR Output
if [ -s $LOGFILE ]
then
? ? echo -e "\033[31mERROR:Images Import Failed!\033[0m"
? ? echo -e "\033[31mPlease View The Log Lile : $LOGFILE\033[0m"
else
? ? /usr/bin/rm -f $LOGFILE
fi?