Hyperledger Fabric 1.0 從零開始(四)——Fabric源碼及鏡像文件處理

2Fabric源碼及鏡像文件處理

2.1下載Fabric源碼

下載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的視圖正常狀況下以下所示:測試

 

 

2.2下載Fabric相關鏡像文件

該操做有多種方式進行,若是是測試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)

 

 

2.3鏡像備份和拷貝(該步驟並不是必須,若無此需求,能夠略過本步驟)

上述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。

相關文章
相關標籤/搜索