zoukankan      html  css  js  c++  java
  • 利用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 "33[34;1m$133[0m"
    }
    function eRed(){    
        echo -e "33[35;1m$133[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> 
    The 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

  • 相关阅读:
    python3获取文件夹大小
    git master分支被污染,dev是最新稳定的
    优化经验杂记
    kong
    prometheus
    C# 线程执行带参方法的几种写法(ThreadStart,delegate (),()=>)
    MySql字符集utf8mb4和utf8区别
    程序员必备的一些数学基础知识
    hbase统计表的行数的三种方法
    Flink实时计算pv、uv的几种方法
  • 原文地址:https://www.cnblogs.com/llhl/p/9648628.html
Copyright © 2011-2022 走看看