在学习研究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 "=================================================================================================="