zoukankan      html  css  js  c++  java
  • Fabric镜像拉取

    脚本说明

    脚本改自官方,可以拉取fabric ca/peer/orderer/ccenv/tools等镜像,我注释掉了拉取第三方镜像(zookeeper,kafka,couchdb)的代码。

    脚本内容

    创建脚本vi docker_pull_fabric_images.sh。然后复制下面的内容到脚本。

    #!/bin/bash
    #
    # Copyright IBM Corp. All Rights Reserved.
    #
    # SPDX-License-Identifier: Apache-2.0
    #
    
    # Fabric 1.4.0 :e.g. bootstrap.sh 1.4.0 1.4.0 0.4.14 
    # Fabric 1.4.1 :e.g. bootstrap.sh 1.4.1 1.4.1 0.4.15 
    
    # if version not passed in, default to latest released version
    export VERSION=1.4.1
    # if ca version not passed in, default to latest released version
    export CA_VERSION=$VERSION
    # current version of thirdparty images (couchdb, kafka and zookeeper) released
    export THIRDPARTY_IMAGE_VERSION=0.4.15
    export MARCH=$(uname -m)
    
    printHelp() {
      echo "Usage: docker_pull_fabric_images.sh [<version>] [<ca_version>] [<thirdparty_version>][-d]"
      echo
      echo "-d - bypass docker image download"
      echo
      echo "e.g. docker_pull_fabric_images.sh 1.4.0 1.4.0 0.4.14"
      echo "would download docker images and binaries for version 1.4.0 (fabric) 1.4.0 (fabric-ca) 0.4.14 (thirdparty)"
    }
    
    dockerFabricPull() {
      local FABRIC_TAG=$1
      for IMAGES in peer orderer ccenv tools; do
          echo "==> FABRIC IMAGE: $IMAGES"
          echo
          docker pull hyperledger/fabric-$IMAGES:$FABRIC_TAG
          # docker tag hyperledger/fabric-$IMAGES:$FABRIC_TAG hyperledger/fabric-$IMAGES
      done
    }
    
    dockerThirdPartyImagesPull() {
      local THIRDPARTY_TAG=$1
      for IMAGES in couchdb kafka zookeeper; do
          echo "==> THIRDPARTY DOCKER IMAGE: $IMAGES"
          echo
          docker pull hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG
          # docker tag hyperledger/fabric-$IMAGES:$THIRDPARTY_TAG hyperledger/fabric-$IMAGES
      done
    }
    
    dockerCaPull() {
          local CA_TAG=$1
          echo "==> FABRIC CA IMAGE"
          echo
          docker pull hyperledger/fabric-ca:$CA_TAG
          # docker tag hyperledger/fabric-ca:$CA_TAG hyperledger/fabric-ca
    }
    
    dockerInstall() {
      which docker >& /dev/null
      NODOCKER=$?
      if [ "${NODOCKER}" == 0 ]; then
    	  echo "===> Pulling fabric Images"
    	  dockerFabricPull ${FABRIC_TAG}
    	  echo "===> Pulling fabric ca Image"
    	  dockerCaPull ${CA_TAG}
              # 不拉取三方镜像
    	  # echo "===> Pulling thirdparty docker images"
    	  # dockerThirdPartyImagesPull ${THIRDPARTY_TAG}
    	  echo
    	  echo "===> List out hyperledger docker images"
    	  docker images | grep hyperledger*
      else
        echo "========================================================="
        echo "Docker not installed, bypassing download of Fabric images"
        echo "========================================================="
      fi
    }
    
    DOCKER=true
    SAMPLES=true
    
    # Parse commandline args pull out
    # version and/or ca-version strings first
    if echo $1 | grep -q 'd'; then
      VERSION=$1;shift
      if echo $1 | grep -q 'd'; then
        CA_VERSION=$1;shift
        if echo $1 | grep -q 'd'; then
          THIRDPARTY_IMAGE_VERSION=$1;shift
        fi
      fi
    fi
    
    # prior to 1.1.0 architecture was determined by uname -m
    if [[ $VERSION =~ ^1.[0].* ]]; then
      export FABRIC_TAG=${MARCH}-${VERSION}
      export CA_TAG=${MARCH}-${CA_VERSION}
      export THIRDPARTY_TAG=${MARCH}-${THIRDPARTY_IMAGE_VERSION}
    else
      # starting with 1.2.0, multi-arch images will be default
      # 从1.2.0版本开始,镜像就使用默认的版本(当前文件中定义的)
      : ${FABRIC_TAG:="$VERSION"}
      : ${CA_TAG:="$CA_VERSION"}
      : ${THIRDPARTY_TAG:="$THIRDPARTY_IMAGE_VERSION"}
    fi
    
    # then parse opts
    while getopts "h?db" opt; do
      case "$opt" in
        h|?)
          printHelp
          exit 0
        ;;
        d)  DOCKER=false
        ;;
      esac
    done
    
    if [ "$DOCKER" == "true" ]; then
      echo
      echo "Installing Hyperledger Fabric docker images"
      echo
      dockerInstall
    fi
    

    执行脚本

    # 注意:给脚本添加执行权限
    # 执行shell可能报错
    # 执行.sh脚本时出现$’
    ’: 未找到命令
    # 是因为脚本在windows下编辑过,windows下的换行带有‘
    ’而uninx或者linux下的换行是‘
    ’
    # 解决办法-->安装dos2unix:
    yum install -y dos2unix
    # 然后执行命令转换脚本格式:
    dos2unix docker_pull_fabric_images.sh.sh
    # 脚本赋权
    chmod +x docker_pull_fabric_images.sh.sh
    # 执行脚本
    ./docker_pull_fabric_images.sh.sh 1.4.1
    
  • 相关阅读:
    PAT (Basic Level) Practice (中文)1022 D进制的A+B
    PAT (Basic Level) Practice (中文)1001 害死人不偿命的(3n+1)猜想
    Pycharm的调试
    Pycharm自带Git实现版本管理
    JMeter分布式压测
    JMeter内存溢出:java.lang.OutOfMemoryError: Java heap space解决方法
    JMeter资源监控插件PerfMon的使用
    JMeter命令行执行+生成HTML报告
    JMeter压测“java.net.SocketException: Socket closed”解决方法
    JMeter压测“java.net.BindException: Address already in use: connect”解决方法
  • 原文地址:https://www.cnblogs.com/jockming/p/13255460.html
Copyright © 2011-2022 走看看