下載Fabric源碼是由於要用到源碼中提到的列子和工具,工具編譯須要用到go語言環境,所以須要把源碼目錄放到$GOPATH下。經過1.3中go的安裝配置,$GOPATH設置爲/opt/gopath。git
咱們可使用Git命令下載源碼,也可使用go get命令,偷懶一點,咱們直接用go get命令獲取最新的Fabric源碼: github
go get github.com/hyperledger/fabric
【注:使用離線環境或者內網環境的朋友能夠直接選擇對應版本在github上下載,再經過ftp上傳到指定目錄便可】docker
這個可能等的時間比較久,等完成後,咱們能夠在~/go/src/github.com/hyperledger/fabric中找到全部的最新的源代碼。因爲Fabric一直在更新,全部咱們並不須要最新最新的源碼,須要切換到v1.0.0版本的源碼便可:服務器
1 cd /opt/gopath/src/github.com/hyperledger/fabric/ 2 git checkout -b v1.0.0
本步驟也可直接在github上將源碼下載至本地,再經過ftp上傳至hyperledger目錄。網絡
若是沒有git命令,還須要先執行如下命令,構建本地git環境。工具
yum install git
最終目錄在FTP的視圖正常狀況下以下所示:測試
該操做有多種方式進行,若是是測試Fabric集羣方案,直接進入fabric/examples/e2e_cli目錄下,運行./download-dockerimages.sh,便可下載該工程必要的鏡像文件。通常狀況下,爲了保證鏡像與下載到hyperledger中的源碼demo版本號相對應,該種方法屬於較爲穩當的方案。網站
但爲了從此升級方便,且版本能夠由本身控制,故本次還將介紹另外一種方案,也是筆者推薦的方案。spa
本次Fabric相關鏡像都可以在DockerHub官方鏡像網站進行下載,檢索HyperLedger,以hyperledger/fabric-peer爲例,進入其下載頁面,官方給出的下載方式以下:操作系統
docker pull hyperledger/fabric-peer
但因爲docker鏡像下載在沒有給出指定tag的狀況下會默認使用lastest,而該方案最終可能會下載失敗,所以,在fabric-peer下載頁選中其tags標籤,查看當前fabric-peer最新版本號,根據咱們所使用的操做系統狀況,選擇x86_64-1.0.0版本,故最終執行的docker下載命令以下:
docker pull hyperledger/fabric-peer:x86_64-1.0.0
而fabric環境主要須要的鏡像有如下幾種:
hyperledger/fabric-tools hyperledger/fabric-orderer hyperledger/fabric-peer hyperledger/fabric-couchdb hyperledger/fabric-kafka hyperledger/fabric-ca hyperledger/fabric-zookeeper hyperledger/fabric-baseos
根據上述方案,能夠將這些必要的鏡像由docker服務所有下載至本地,並最終使用docker-compose來啓動對應的鏡像服務。
【注:離線環境或內網環境的朋友,請經過其它能鏈接公網的服務器來操做這一步,後續能夠將這些鏡像打包並在內網環境的服務器上進行恢復,具體操做看後續講述】
爲了方便docker-compose的配置,咱們將全部的鏡像tag都改成latest,執行以下格式的命令:
docker tag IMAGEID(鏡像id) REPOSITORY:TAG(倉庫:標籤)
例子
docker tag 0403fd1c72c7 docker.io/hyperledger/fabric-tools:latest
全部的鏡像文件及版本號修改完成後,執行以下命令:
docker images
其結果視圖應該以下:
若是下載下來的鏡像有問題,能夠執行以下命令刪除指定Image ID的鏡像
docker rmi <image id> 或 docker rmi -f<image id>
刪除所有鏡像命令以下:
docker rmi $(docker images -q)
或
docker rmi -f $(docker images -q)
上述HyperLedger/Fabric鏡像數量較多且容量需求大,一套基本的服務鏡像可達10G左右,若是在多臺服務器上部署,會耽誤不少時間。所以,對於上述已經下載至本地的鏡像,咱們須要使用docker save命令來備份,並經過scp命令來將這些鏡像文件拷貝至其餘服務器。
以鏡像hyperledger/fabric-peer爲例:
在執行sava以前,須要先查詢當前鏡像包的Image ID,執行命令以下:
docker images
獲得以下結果,能夠看到咱們已經下載下來的fabric-peer的Image ID是6830dcd7b9b5
咱們能夠執行以下命令在/tmp目錄下來生成該鏡像的tar包:
docker save 6830dcd7b9b5> /tmp/docker/fabric-images/peer.tar
上述命令結構爲docker save IMAGEID(鏡像id) >(文件路徑及文件名)
根據上述命令,咱們對其餘已經下載下來的fabric鏡像分別執行打包操做,最後在/tmp/docker/fabric-images目錄下執行ls查看當前目錄鏡像文件,正常狀況下會看到以下視圖:
該視圖只截取了一部分,且該視圖僅ls命令結果用做參考。
經過FTP能夠看到目錄大體以下:
當全部的鏡像文件都被打包後,能夠經過以下命令格式來發送鏡像:
scp fabric-peer.tar root@10.111.171.217:/tmp/docker/fabric-images
經過上述命令能夠將鏡像文件遠程拷貝至10.111.171.217遠端服務器/tmp/docker/fabric-images目錄下,這裏是內網ip,若是是在內網的環境下,拷貝速度會很快,外網則根據服務器自身網絡狀況而定。
【注:離線環境或內網環境仍是經過手工拷貝的方式吧,另外內網傳輸速度不盡人意的話,也用手工拷貝吧】
當遠端服務器接收到全部的鏡像文件後,可執行以下命令來加載這些鏡像文件:
docker load < /tmp/docker/fabric-peer.tar
鏡像加載完成後,可根據以前3的方案,將鏡像tag都改成lastest。