1. 程式人生 > >Hyperledger Fabric 1.0 從零開始(四)——Fabric原始碼及映象檔案處理

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-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