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。

时间: 2024-10-05 12:12:39

Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理的相关文章

Hyperledger Fabric 1.0 从零开始(一)——吐槽

在HyperLedger/Fabric发布0.6的时候,公司就已经安排了一个团队研究这一块,后来也请IBM的专家组过来培训了一批人,不幸的是,这批人后来全走了,然后没过多久1.0就发布了.自从2017年7月HyperLedger/Fabric发布了1.0正式版后(可以参考:Hyperledger Fabric 1.0发布:基于区块链的开源分布式账本),公司领导就更加关注这个领域.然后,就安排我一个人来接手,我主要是做Android和iOS方向的开发,偶尔客串一下java后台服务开发,对linux

Hyperledger Fabric 1.0 从零开始(三)——内网(准离线)环境构建

有公网环境的服务器可以直接看 Hyperledger Fabric 1.0 从零开始(二)--公网环境构建 ,本篇内容与上篇相似,只不过环境搭建需要在内网下,也就是网络被限制的情况下. 1:环境构建与测试 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先安装Docker.Docker-compose和Go语言环境,然后在网上拉取相关的Docker镜像,再通过配

Hyperledger Fabric 1.0 从零开始(二)——公网环境构建

1:环境构建 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先安装Docker.Docker-compose和Go语言环境,然后在网上拉取相关的Docker镜像,再通过配置compose文件来启动各个节点. 1.1:Docker安装 进入docker官网 GetDocker ->Centos ->Get CE(社区版)->Get Docker CE o

Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用

Hyperledger Fabric 1.0 从零开始(十)--智能合约 Hyperledger Fabric 1.0 从零开始(十一)--CouchDB 上述两章,最近网上各路大神文章云集,方案多多,因为最近工作太忙太忙,我暂时就先不赘述了,后续会提供我参考过的大神文章链接出来. 这章先捡大家都比较在意的java sdk应用方案贴出来,很多朋友都找我要过,我主要是把注释都写进去了,用法简单了说了下,一般情况下会java开发的都能看懂. 年前实在太忙. JAVA-SDK 9.1.基本介绍 官方在

EasyUI学习总结(四)——parser源码分析

EasyUI学习总结(四)--parser源码分析 parser模块是easyloader第一个加载的模块,它的主要作用,就是扫描页面上easyui开头的class标签,然后初始化成easyui控件. 1 /** 2 * parser模块主要是解析页面中easyui的控件 3 */ 4 $.parser = { 5 // 是否自动解析 6 auto: true, 7 8 // 可以被解析的控件 9 plugins:['linkbutton','menu','menubutton','splitb

Retrofit2.0使用PC蛋蛋源码搭建姊妹篇——带进度下载文件

Retrofit是PC蛋蛋源码搭建 dsluntan.com 目前最主流的网络框架了,它对网络请求几近完美的封装,大大降低了我们开发者的研发难度,缩短了研发周期.最近项目中遇到了下载视频和图片文件的需求(还有上传视频和图片的需求,请移步这篇博客),我第一反应是用retrofit做呀,so easy!产品接着说,要带下载进度条哦!我一想,retrofit好像并没有给我们提供显示下载进度的接口,哎呀,看来还是得自己个儿整整喽!接下来,我把自己实现Retrofit带进度下载文件的流程分享给大家.在de

四.jQuery源码解析之jQuery.fn.init()的参数解析

从return new jQuery.fn.init( selector, context, rootjQuery )中可以看出 参数selector和context是来自我们在调用jQuery方法时传过来的.那么selector和context都有哪些可能. 对于表格中的4~9行中的可能做具体分析. 如果selector是字符串,则首先检测是html代码还是#id. 126行的if语句:以"<"开头,以">"结尾,且长度>=3.则假设额这个是HT

RxJava1.0 flatMap方法的源码分析

RxJava1.0 flatMap方法的源码分析 package com.yue.test; import java.awt.Cursor; import java.util.ArrayList; import java.util.List; import com.yue.bean.Course; import com.yue.bean.Student; import rx.Observable; import rx.Subscription; import rx.Observable.OnSu

centos 7 下 rabbitmq 3.8.0 &amp; erlang 22.1 源码编译安装

centos 7 下 rabbitmq 3.8.0 & erlang 22.1 源码编译安装 安装前请检查好erlang和rabbitmq版本是否相匹配参考:RabbitMQ Erlang Version Requirements 1. erlang 22.1 源码编译安装 1.1 安装Erlang编译安装必要依赖 sudo yum install -y gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-