利用shell脚本解决区块链Fabric学习时下载Docker镜像失败和费时问题

在学习研究Fabric时第一步就是拉取Docker镜像,为避免在多机器下重复这种费时费力的工作。
解决办法
1. 使用Vmware的克隆功能或者快照功能
2. 导出Docker 相关镜像,需要的时候再导入,跳过下载过程


备注:centos,新建文件夹后,上传脚本或和镜像文件,执行导出或导入,导入导出比较占机器资源,大约十来分钟时间,和镜像个数与包大小有关

./dockerSaveAndLoad.sh 

文末有分享链接
这里写图片描述


./dockerSaveAndLoad.sh save

这里写图片描述

这里写图片描述

这里写图片描述


./dockerSaveAndLoad.sh load

这里写图片描述

这里写图片描述
这里写图片描述


#!/bin/bash
#导出Fabric Docker 相关镜像
#导入当前文件夹下所有的镜像包
#
TYPE_SAVE_OR_LOAD="$1"

function eBlue(){   
    echo -e "\033[34;1m$1\033[0m"
}
function eRed(){    
    echo -e "\033[35;1m$1\033[0m"
}
function saveTxt(){ 
    result=`docker images > images.txt`
}
function listDockerImgs(){  
    cat images.txt
}
function listDirImgFiles(){ 
    for filename in `ls .`
    do
        if [[ $filename == *.tar ]] ; then
            echo $filename
        fi
    done    
    imgSize=`du -sh`
    eBlue ".........................      当前镜像总大小:${imgSize}....................................."
}
function saveDockerImgs(){  
index=1
str=''
dockerFileTemp=''
dockerTag=''
for  i  in  `cat images.txt`
do
    if [ $index -lt 6 ];then
        index=$[$index+1]
        continue 
    fi 
    temp=$((index-6))
    if test $((temp%7)) -eq 0;then
        if [ -z "$str" ];then
            str=${i}
        else
            str=${str}' '${i}
        fi
        if [[ $str != *SIZE* ]] ; then
            echo ${str}
        fi
        if [[ $str == *fabric* ]] &&  [[ $str != *latest* ]] ; then
            dockerFile=${dockerTag//\/_}
            temp1=`echo $dockerFile | sed -n "s/:/_/p"` 
            temp2=`echo $temp1 |  sed -n "s/\//_/p"` 
            dockerFile=$temp2'.tar'
            #result=`docker save -o ./$dockerFile $dockerTag`
            #eColor $result
            eBlue "导出当前镜像:${dockerFile}";
            dockerFileTemp=''
            dockerTag=''
        fi
        echo ''
        str=''
    else
        if [ -z "$str" ];then
            str=${i}
        else
            str=${str}' '${i}
        fi
        indexTemp=$((temp%7))
        if test $indexTemp -eq 1;then
            dockerTag=''${i}
        elif test $indexTemp -eq 2;then
            dockerTag=${dockerTag}':'${i}
            dockerFile=${dockerTag}
        fi
    fi
    index=$[$index+1]
done
}
function loadTar2Docker(){  
for filename in `ls .`
do
    if [[ $filename == *.tar ]] ; then
        #result=`docker load < $filename`
        echo $result
    fi
done    
}
function printHelp () {
        echo -e "Usage: ./dockerSaveAndLoad.sh <save|load> \nThe arguments must be in order."
}
eRed  "=================================================================================================="
eBlue " ____    _____      _      ____    _____ "
eBlue "/ ___|  |_   _|    / \    |  _ \  |_   _|"
eBlue "\___ \    | |     / _ \   | |_) |   | |  "
eBlue " ___) |   | |    / ___ \  |  _ <    | |  "
eBlue "|____/    |_|   /_/   \_\ |_| \_\   |_|  "
saveTxt 
if [ "${TYPE_SAVE_OR_LOAD}" == "save" ]; then
eRed  "==================当前DOCKER镜像列表=============================================================="
listDockerImgs  
eRed  "==================开始导出镜像===================================================================="
saveDockerImgs  
eRed  "=================================================================================================="
listDirImgFiles 
elif [ "${TYPE_SAVE_OR_LOAD}" == "load" ]; then
eRed  "==================当前DOCKER镜像列表=============================================================="
listDockerImgs  
eRed  "==================当前镜像文件列表================================================================"
listDirImgFiles 
eRed  "==================开始导入镜像===================================================================="
loadTar2Docker  
eRed  "==================当前DOCKER镜像列表=============================================================="
listDockerImgs  
else
        printHelp
        exit 1
fi
eRed  "=================================================================================================="
eBlue " _____   _   _   ____   "
eBlue "| ____| | \ | | |  _ \  "
eBlue "|  _|   |  \| | | | | | "
eBlue "| |___  | |\  | | |_| | "
eBlue "|_____| |_| \_| |____/  "
eRed  "=================================================================================================="

镜像文件及脚本分享 密eweg

posted @ 2018-03-29 12:38  llhl  阅读(280)  评论(0编辑  收藏  举报