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

  • 相关阅读:
    Linux系统编程——基于文件描述符的文件操作(2)
    Linux系统编程——基于文件描述符的文件操作(1)
    Linux系统编程——静态库和动态库
    qsort实现结构体数组排序
    C++Primer第五版——习题答案详解(十一)
    C++Primer第五版——习题答案目录
    C++Primer第五版——习题答案详解(九)
    C++Primer第五版——习题答案详解(十)
    JS 创建动态表格练习
    org.dom4j 解析XML
  • 原文地址:https://www.cnblogs.com/llhl/p/9648628.html
Copyright © 2011-2022 走看看