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


2Fabric源碼及鏡像文件處理

2.1下載Fabric源碼

下載Fabric源碼是因為要用到源碼中提到的列子和工具,工具編譯需要用到go語言環境,因此需要把源碼目錄放到$GOPATH下。通過1.3中go的安裝配置,$GOPATH設置為/opt/gopath。

我們可以使用Git命令下載源碼,也可以使用go get命令,偷懶一點,我們直接用go get命令獲取最新的Fabric源碼: 

go get github.com/hyperledger/fabric

【注:使用離線環境或者內網環境的朋友可以直接選擇對應版本在github上下載,再通過ftp上傳到指定目錄即可】

這個可能等的時間比較久,等完成后,我們可以在~/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版本號相對應,該種方法屬於較為妥當的方案。

但為了今后升級方便,且版本可以由自己控制,故本次還將介紹另一種方案,也是筆者推薦的方案。

本次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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM