1.鏡像需與fabric版本一致
fabric運行所需要的鏡像一共是12種
可以通過輸入docker images查看你已下載的鏡像。
如果發(fā)現(xiàn)有少的鏡像則用下述語句下載,每條語句對應(yīng)下載每一個鏡像,請根據(jù)所缺失的鏡像選擇語句并執(zhí)行:
docker pull hyperledger/fabric-tools:x86_64-1.0.0
docker pull hyperledger/fabric-couchdb:x86_64-1.0.0
docker pull hyperledger/fabric-kafka:x86_64-1.0.0
docker pull hyperledger/fabric-orderer:x86_64-1.0.0
docker pull hyperledger/fabric-peer:x86_64-1.0.0
docker pull hyperledger/fabric-ca:x86_64-1.0.0
docker pull hyperledger/fabric-ccenv:x86_64-1.0.0
docker pull hyperledger/fabric-baseimage:x86_64-0.4.7
docker pull hyperledger/fabric-baseos:x86_64-0.4.7
docker pull hyperledger/fabric-zookeeper:x86_64-1.0.0
docker pull hyperledger/fabric-javaenv:x86_64-1.0.0
docker pull hyperledger/fabric-membersrvc:latest
請注意每個鏡像的版本號!大多數(shù)往往缺少baseimage,baseos,membersrvc這三種。
2 錯誤匯總
1.ERRO 001 Cannot run peer because error when setting up MSP from directory........msp.......
2.ERRO 001 Cannot run peer because error when setting up MSP from directory /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp......
解決辦法:
這兩個問題都是因為fabric版本和docker鏡像版本不一致
查看fabric branch:git branch -a
結(jié)果帶*就是你的branch,如果不是v1.0.0,就
git checkout v1.0.0
當(dāng)然,也可以下載對應(yīng)的鏡像(如果版本為v 1.1):
cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.1.0 -f x86_64-1.1.0
再查看下fabric目錄下: make cryptogen。如果返回
CGO_CFLAGS=" " GOBIN=/opt/gopath/src/github.com/hyperledger/fabric/build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/cryptogen/metadata.Version=1.0.1" github.com/hyperledger/fabric/common/tools/cryptogen
github.com/hyperledger/fabric/vendor/github.com/miekg/pkcs11
vendor/github.com/miekg/pkcs11/pkcs11.go:29:18: fatal error: ltdl.h: No such file or directory
compilation terminated.
Makefile:227: recipe for target 'build/bin/cryptogen' failed
make: *** [build/bin/cryptogen] Error 2
表明缺少ltdl.h文件。執(zhí)行以下命令:
apt-get install libtool libltdl-dev
make cryptogen
3 如果出現(xiàn):
Error: Error endorsing chaincode: rpc error: code = Unknown desc = Error starting container: API error (404): {"message":"network e2ecli_default not found"}
解決辦法:
cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/base
gedit peer-base.yaml
打開文件后將e2ecli_default修改為e2e_cli_default
4 go語言的環(huán)境問題
注意:cd ~ 和 cd /home是不一樣的?。?!
7 docker刪除相同的鏡像出錯解決:

8 出現(xiàn)DEBU 001 Returning existing local MSP

有一種解決方法是:
執(zhí)行一下命令 vim /etc/hosts
增加以下內(nèi)容
172.16.10.188 orderer.example.com
但是,我覺的這種方法沒有什么效果,因為我執(zhí)行了這句話后,也沒解決問題
后來,看到一篇帖子,終于解決了:
是因為環(huán)境遺留的問題
解決方式,重新關(guān)閉網(wǎng)絡(luò)
./network_setup.sh down mychannel
root@cc-fibric:/home/cc/go/src/github.com/hyperledger/fabric/examples/e2e_cli# ./network_setup.sh down mychannel
WARNING: The CHANNEL_NAME variable is not set. Defaulting to a blank string.
WARNING: The TIMEOUT variable is not set. Defaulting to a blank string.
Stopping cli ... done
Stopping kafka3 ... done
Stopping kafka0 ... done
Stopping kafka1 ... done
Stopping kafka2 ... done
Stopping peer1.org2.example.com ... done
Stopping zookeeper0 ... done
Stopping zookeeper2 ... done
Stopping zookeeper1 ... done
Stopping peer0.org1.example.com ... done
Stopping peer0.org2.example.com ... done
Stopping peer1.org1.example.com ... done
Removing cli ... done
Removing orderer.example.com ... done
Removing kafka3 ... done
Removing kafka0 ... done
Removing kafka1 ... done
Removing kafka2 ... done
Removing peer1.org2.example.com ... done
Removing zookeeper0 ... done
Removing zookeeper2 ... done
Removing zookeeper1 ... done
Removing peer0.org1.example.com ... done
Removing peer0.org2.example.com ... done
Removing peer1.org1.example.com ... done
Removing network e2e_cli_default
---- No containers available for deletion ----
---- No images available for deletion ----
當(dāng)然,也有可能是e2e_cli文件沒有權(quán)限讀寫
后記:
我一開始是版本錯了,是v1.1 的版,下的docker鏡像卻是v1.0.0;
接下來,估計是由于前面運行過一次./network_setup.sh up ,所以有環(huán)境殘余。
在執(zhí)行完./network_setup.sh down mychannel后,
再啟動
./network_setup.sh up
root@cc-fibric:/home/cc/go/src/github.com/hyperledger/fabric/examples/e2e_cli# ./network_setup.sh up
setting to default channel 'mychannel'
mychannel
Using cryptogen -> /home/cc/go/src/github.com/hyperledger/fabric/examples/e2e_cli/../../release/linux-amd64/bin/cryptogen
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com
Using configtxgen -> /home/cc/go/src/github.com/hyperledger/fabric/examples/e2e_cli/../../release/linux-amd64/bin/configtxgen
##########################################################
######### Generating Orderer Genesis block ##############
##########################################################