Hyperledger Fabric 1.0 從零開始(四)——Fabric原始碼及映象檔案處理
2:Fabric原始碼及映象檔案處理
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上傳到指定目錄即可】
這個可能等的時間比較久,等完成後,我們可以在
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-ccenv hyperledger/fabric-baseimage
根據上述方案,可以將這些必要的映象由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 [email protected]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。
相關推薦
Hyperledger Fabric 1.0 從零開始(四)——Fabric原始碼及映象檔案處理
2:Fabric原始碼及映象檔案處理 2.1下載Fabric原始碼 下載Fabric原始碼是因為要用到原始碼中提到的列子和工具,工具編譯需要用到go語言環境,因此需要把原始碼目錄放到$GOPATH下。通過1.3中go的安裝配置,$GOPATH設定為/opt/gopath。
Hyperledger Fabric 1.0 從零開始(八)——Fabric多節點叢集生產部署
6.1、平臺特定使用的二進位制檔案配置 該方案與Hyperledger Fabric 1.0 從零開始(五)——執行測試e2e類似,根據企業需要,可以控制各節點的域名,及聯盟鏈的統一域名。可以指定單獨節點的訪問,生成指定的公私鑰、證書等檔案。具體的引數配置可以參考generateArtifacts.sh檔案,
Hyperledger Fabric 1.0 從零開始(二)——公網環境構建
1.3 項目 htm move 自己 lvm2 fast 情況 tor 1:環境構建 在本文中用到的宿主機環境是Centos ,版本為Centos.x86_647.2,通過Docker 容器來運行Fabric的節點,版本為v1.0。因此,啟動Fabric網絡中的節點需要先安
Hyperledger Fabric 1.0 從零開始(六)——創建Fabric多節點集群
_id 測試 es2017 xtra 去掉 compose 多個 服務 執行命令 4:創建Fabric多節點集群 4.1、配置說明 首先可以根據官方Fabric自帶的e2e_cli列子中的集群方案來生成我們自己的集群,與案例不同的是我們需要把容器都分配到不同的服務器上,彼此
Hyperledger Fabric 1.0 從零開始(五)——執行測試e2e
3:執行測試e2e 3.1、執行fabric-samples的問題說明 該問題說明能夠解決6.1、平臺特定使用的二進位制檔案配置第一步的問題。可以選擇繼續閱讀該說明,或者等參考到6.1小節時再反向閱讀本說明,具體在6.1中會重新指向本步驟。 一般情況下,我們會參照官網來完成第一個網路測試,在該線上文件中會讓我
Hyperledger Fabric 1.0 從零開始(三)——環境構建(內網/準離線)
1:環境構建與測試 在本文中用到的宿主機環境是Centos ,版本為Centos.x86_647.2,通過Docker 容器來執行Fabric的節點,版本為v1.0。因此,啟動Fabric網路中的節點需要先安裝Docker、Docker-compose和Go語言環境,然後在網上拉取相關的Docker映象
Centos Docker 從零開始(2)之 mssql 的資料庫檔案儲存在主機
Docker mmsql新建資料庫如果能夠把資料庫檔案儲存在主機上就好了,centos好像可以掛載的 docker 的 run 命令: -v ~/nginx/www:/www :將主機中專案的目錄www掛載到容器的/www 準備命令一下: docker run -e
Jenkins從零開始(二)常用外掛及問題
問題 啟動Jenkis提示端口占用 解決: 1. 參考埠號:lsof -i tcp:port 將port換成被佔用的埠(如:8086、8080) 2. 殺死佔用埠的pid程序 kill PID(程序的PID,如2044) Jenk
Git從零開始(三)
16px pop 普通 遠程服務 git clone one img 分享 模式 一、遠程倉庫管理 1、將本地內容推送到遠程庫 先關聯遠程庫,執行命令: git remote add origin https://github.com/Hollydan/gitsto
docker從零開始(二)容器初體驗
osi build 技術分享 框架 log 註冊表 代碼 content doc 使用定義容器 Dockerfile Dockerfile定義容器內所需要的環境。對網絡接口和磁盤驅動器等資源的訪問在此環境中進行虛擬化,該環境與系統的其他部分隔離,因此您需要將端口映射到外部
docker從零開始(五)堆棧初體驗,stacks
開始 services 信息 工作 run cer cal tail int 先決條件 安裝Docker 1.13或更高版本。 獲取Docker Compose,請參考第三節 按照第四節中的描述獲取Docker Machine。 在第二節中了解如何創建容器。
【視訊】Kubernetes1.12從零開始(六):從程式碼編譯到自動部署
作者: 李佶澳 轉載請保留:原文地址 釋出時間:2018/11/10 16:14:00 說明 kubefromscratch-ansible和kubefromscratch介紹 使用前準備
JavaWeb專案從零開始(3)--- 整合Mybatis-Plus,簡化開發,增強工作效率
mybatis每次查詢都要寫sql是不是很煩?每次都要貼上複製一個Controller、Service、Dao、mapper.xml是不是不想每次都重複這樣的工作? Mybatis-Plus 可以幫你解決上述的煩惱。 (一)簡介 Mybatis-Plu
Netty從零開始(一)
需要用到netty,之前就當年實習的時候用過Mina,netty沒用過,所以加急學習了一下,感覺還不錯,不多說,從官網入手,官網地址:http://netty.io/wiki/user-guide-for-4.x.html 有興趣的朋友可以自己去檢視。 前言: 問題 現在
STM32F103+RTT從零開始(一)——點亮LED
最近心血來潮,打算重新撿起老本行,結果發現很多都忘記了。乾脆重新開始學習,並做個從零開始的筆記了。 STM32系列MCU STM32系列晶片包括F0/F1/F2/F3/F4/F7/L0/L1/L4/H7等系列晶片晶片。不同系列的晶片適用於不同的應用場景。
RxJava從零開始(一)
前言:從零開始學習RxJava,首先是現在才來學習確實已經比別人慢了很多了,沒辦法,還是要學呀。RxJava只是響應式程式設計中的一種,還有其他語言的,這些簡介啥的只有去官網看了,響應式程式設計的優點也不說了,我也不想清楚,知道流弊就行了,懂怎麼用,適用於哪些情況再說去研究
React Native從零開始(六)ListView的簡單使用
/** * Created by 11158 on 2017-01-16. */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View, List
PHPUnit從零開始(2):編寫 PHPUnit 測試
計劃永遠趕不上變化,本計劃本月完成所有PHPUnit的部落格內容。今天一看日曆發現都TMD的二月底了,而我才寫了一篇而已。情何以堪…… 今天寫第二篇,詳細說一說如何寫出一個測試用例。 這裡會涉及到一些什麼自動載入之類的,我就不再這裡補充了,大家可以查閱相關P
STM32F103+RTT從零開始(二)——RTT系統中點亮LED
上一篇部落格簡單說了下如何使用Keil建立STM32F103的工程,並且完成了LED點亮,及讓LED等閃爍的功能,那是諸多同學學習微控制器的起手式。本篇部落格繼續上一篇部落格的內容,依舊是點亮LED,不同的是,這次點亮LED等,是在RT-Thread作業系統中進
《react-native》從零開始(一)生命週期
生命週期,貫穿整個開發過程非常重要。 搭建開發環境 生命週期 react-native 是一種狀態機的模式,和安卓一樣也是存在生命週期的。 先上張經典圖片 如圖,可以把元件生命週期大致分為三個階段: 這裡 我們和android