腳本說明
腳本改自官方,可以拉取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腳本時出現$’\r’: 未找到命令
# 是因為腳本在windows下編輯過,windows下的換行帶有‘\r’而uninx或者linux下的換行是‘\n’
# 解決辦法-->安裝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