該問題說明可以解決6.1、平臺特定使用的二進制文件配置第一步的問題。能夠選擇繼續閱讀該說明,或者等參考到6.1小節時再反向閱讀本說明,具體在6.1中會從新指向本步驟。html
通常狀況下,咱們會參照官網來完成第一個網絡測試,在該在線文檔中會讓咱們去下載一個fabric-samples,下載地址在github上,咱們須要將其下載至本地是一個fabric-samples-release文件夾,將其改名爲fabric-samples隨後上傳至opt/gopath/src目錄下。linux
按照官網提示執行的命令是沒法運行起first-network這個項目,該demo須要先下載 Platform-specific Binaries(特定的二進制文件),按照官方文檔中的描述,須要先執行以下命令:git
curl -sSL https://goo.gl/iX9dek | bash
上述命令會下載自動化部署腳本,同時也會下載平臺特定使用的二進制文件才cryptogen、configtxgen、configtxlator以及peer,把他們放到上述倉庫的bin目錄下。github
一般執行上述命令並不能下載,即使是能下載,速度也奇慢無比,故此,咱們離線下載相關二進制文件來執行上述操做。docker
能夠在http://download.csdn.net/download/jiayiyangzhu/10245492執行下載1.0版本的,在https://download.csdn.net/download/jiayiyangzhu/10330267執行下載1.1版本的,積分默認最低2…bootstrap
在官網給出的執行命令中並無給出離線下載地址,且官網也沒有離線部署說明,咱們能夠在1.4.2中下載的fabric源碼中找到下載地址,在/opt/gopath/src/github.com/hyperledger/fabric/scripts目錄下有一個bootstrap-1.0.0.sh腳本文件,事實上若是外網訪問條件優越的狀況下,直接運行該腳本便可下載全部所需的fabric鏡像文件及官方指定所需的二進制文件。bash
打開bootstrap-1.0.0.sh(目前最新版爲1.0.0,以實際爲準),找到其中對「Downloading platform binaries」的輸出行,目前所見是「echo "===> Downloading platform binaries"」,查看其指向的下載地址,能夠獲得一個官網提供的離線下載網址,根據上下文意思及當前咱們所使用的版本信息,能夠獲得最終的離線下載文件地址,下載該文件到本地。網絡
根據官網的介紹,解壓後會獲得一個bin文件夾,將其解壓至/opt/gopath/src/github.com/hyperledger/fabric-samples目錄下便可運行first-network等項目。curl
進入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目錄下,文件結構以下圖所示:測試
network_setup.sh是一件測試腳本,該腳本啓動5個docker容器,其中4個容器運行peer節點和1個容器運行orderer節點,它組成一個Fabric集羣。另外還有一個cli容器用於執行建立channel、加入channel、安裝和執行chaincode等操做。測試用的chaincode定義了兩個變量,在實例化的時候會給這兩個變量賦予了初始值,並經過invoke操做可使兩個變量的值發生變化。
經過如下命令執行測試:
bash network_setup.sh up
接下來會有許多的調試信息,具體可參考e2e_cli目錄下的script/script.sh文件,當終端出現如下信息時,說明測試經過,全部部件正常工做:
這個命令能夠在本機啓動4+1的Fabric網絡而且進行測試,跑Example02這個ChainCode。咱們能夠看到每一步的操做,最後確認單機沒有問題。確認咱們的鏡像和腳本都是正常的,咱們就能夠關閉Fabric網絡,繼續咱們的多機Fabric網絡設置工做。關閉Fabric命令:
bash network_setup.sh down
該Fabric網絡集羣測試環境在Linux內核低版本上可能會出現問題,這是舊版內核的bug,好比在執行bash network_setup.sh up的時候會出現以下錯誤:
即執行chaincode初始化的時候報錯,致使集羣單機沒法啓動。
解決方案,使用最新版穩定版的docker(筆者寫文檔時的最新穩定版爲:17.06.0-ce),將Linux內核升級到最新版,筆者原先使用的Linux內核是3.10,出現了上述問題,目前筆者使用的內核版本是4.12.5-1.e17,可以完美運行Fabric集羣環境。
具體能夠參考Can´t specify memory limit in docker run and docker compose