2.1下載Fabric源碼
下載Fabric源碼是由於要用到源碼中提到的列子和工具, 工具編譯須要用到go語言環境, 所以須要把源碼目錄放到$GOPATH下。 經過1.3中go的安裝配
置, $GOPATH設置爲/opt/gopath。
咱們可使用Git命令下載源碼, 也可使用go get命令, 偷懶一點, 咱們直接用go get命令獲取最新的Fabric源碼:
go get github.com/hyperledger/fabric
這個可能等的時間比較久, 等完成後, 咱們能夠在~/go/src/github.com/hyperledger/fabric中找到全部的最新的源代碼。 因爲Fabric一直在更新, 全部咱們並不需
要最新最新的源碼, 須要切換到v1.0.0版本的源碼便可:
cd /opt/gopath/src/github.com/hyperledger/fabric/
git checkout -b v1.0.0
本步驟也可直接在github上將源碼下載至本地, 再經過ftp上傳至hyperledger目錄。
若是沒有git命令, 還須要先執行如下命令, 構建本地git環境。
yum install git
最終目錄在FTP的視圖正常狀況下以下所示:html
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標籤,
https://hub.docker.com/r/hyperledger/fabric-peer/tags/ ,
查看當前fabric-peer最新版本號, 根據咱們所使用的操做系統狀況, 選擇x86_64-1.0.0版本, 故最終執行的docker下載命令以下:
docker pull hyperledger/fabric-peer:x86_64-1.0.0
而fabric環境主要須要的鏡像有如下幾種:
如下幾種鏡像都須要制定特定的版本:x86_64-1.0.0 紅色的三個鏡像是最基本最重要的三個, 能夠支持測試版本, 若是隻是爲了測試, 那麼能夠先安裝這三個。
hyperledger/fabric-tools
hyperledger/fabric-orderer:x86_64-1.0.0
hyperledger/fabric-peer:x86_64-1.0.0
hyperledger/fabric-couchdb
hyperledger/fabric-kafka
hyperledger/fabric-ca:x86_64-1.0.0
hyperledger/fabric-ccenv
hyperledger/fabric-baseimage:x86_64-0.4.0
根據上述方案,能夠將這些必要的鏡像由docker服務所有下載至本地,並最終使用docker-compose來啓動對應的鏡像服務。
爲了方便docker-compose的配置,咱們將全部的鏡像tag都改成latest,執行以下格式的命令:
docker tag IMAGEID(鏡像id) REPOSITORY:TAG(倉庫:標籤)
或者 docker tag old-image[:old-tag] new-image[:new-tag]
例子
docker tag 0403fd1c72c7 docker.io/hyperledger/fabric-tools:latest
或者: docker tag entel_zmc_images entel_zmc_images:zmc_base
latest
這個latest其實在使用中不是最新的意思,而是默認值(defalut)的意思。
也就是說,若是在tag爲可選的命令中,咱們沒有寫上tag,如 docker pull entel_zmc_images:zmc_base vs docker pull entel_zmc_images ,前
者有肯定的tag,然後者沒有,這時系統會自動添加一個:latest標籤,而後去匹配。
這時若是latest對應的鏡像不存在就會報錯!
運行鏡像
理解了latest,那麼下面兩種方式就很簡單了。
# 運行默認鏡像,默認會找tag
docker run entel_zmc_images
# 運行指定tag的鏡像
docker run entel_zmc_images:zmc_base
全部的鏡像文件及版本號修改完成後,執行以下命令:
docker images
其結果視圖應該以下:git
若是下載下來的鏡像有問題, 能夠執行以下命令刪除指定Image ID的鏡像
docker rmi <image id>
或 do
cker rmi -f<image id>
刪除所有鏡像命令以下:
docker rmi $(docker images -q)
或 do
cker rmi -f $(docker images -q)
docker鏡像的版本控制
若是須要升級某個docker鏡像,咱們能夠這樣作。
1.給每一個新生成的鏡像都打上相應版本的tag。此時可能存在image:latest、image:v一、image:v2等。
2.咱們要從v1升級到v2,首先咱們將導入的v2鏡像強制重命名爲image:latest,命令爲docker tag -f image:v2 image:latest
3.docker stop以前正在運行的容器
4.啓用docker run image,此時image的等價鏡像image:latest就是最新的V2鏡像。
總結下步驟:load/tag/stop/run
2.3鏡像備份和拷貝(該步驟並不是必須, 若無此需求, 能夠略過本步驟)
上述HyperLedger/Fabric鏡像數量較多且容量需求大, 一套基本的服務鏡像可達10G左右, 若是在多臺服務器上部署, 會耽誤不少時間。 所以, 對於上述已經下載至本
地的鏡像, 咱們須要使用docker save命令來備份, 並經過scp命令來將這些鏡像文件拷貝至其餘服務器。
以鏡像hyperledger/fabric-peer爲例:
在執行sava以前, 須要先查詢當前鏡像包的Image ID, 執行命令以下:
docker images
獲得以下結果, 能夠看到咱們已經下載下來的fabric-peer的Image ID是6830dcd7b9b5github
咱們能夠執行以下命令在/tmp目錄下來生成該鏡像的tar包:
docker save 6830dcd7b9b5> /tmp/docker/fabric-images/peer.tar
上述命令結構爲docker save IMAGEID(鏡像id) >(文件路徑及文件名)
根據上述命令, 咱們對其餘已經下載下來的fabric鏡像分別執行打包操做, 最後在/tmp/docker/fabric-images目錄下執行ls查看當前目錄鏡像文件, 正常狀況下會看到以下視圖:docker
該視圖只截取了一部分,且該視圖僅ls命令結果用做參考。服務器
經過FTP能夠看到目錄大體以下:網絡
, 且該視圖僅ls命令結果用做參考。經過FTP能夠看到目錄大體以下: 工具
聲明:本教程參考 深藍 和 Aberic博客編寫而成,連接: http://www.cnblogs.com/studyzy/p/7237287.html 和 https://www.cnblogs.com/aberic/p/7527831.html, 且該視圖僅ls命令結果用做參考。經過FTP能夠看到目錄大體以下: , 且該視圖僅ls命令結果用做參考。經過FTP能夠看到目錄大體以下: 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。 測試