利用shell腳本解決區塊鏈Fabric學習時下載Docker鏡像失敗和費時問題

在學習研究Fabric時第一步就是拉取Docker鏡像,爲避免在多機器下重複這種費時費力的工做。
解決辦法
1. 使用Vmware的克隆功能或者快照功能
2. 導出Docker 相關鏡像,須要的時候再導入,跳過下載過程docker


備註:centos,新建文件夾後,上傳腳本或和鏡像文件,執行導出或導入,導入導出比較佔機器資源,大約十來分鐘時間,和鏡像個數與包大小有關centos

./dockerSaveAndLoad.sh

文末有分享連接
這裏寫圖片描述bash


./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學習

相關文章
相關標籤/搜索