在學習研究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 "=================================================================================================="