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上传到指定目录即可】
这个可能等的时间比较久,等完成后,我们可以在~/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的视图正常情况下如下所示:

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.
而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。
Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理的更多相关文章
- Hyperledger Fabric 1.0 学习搭建 (二)--- 源码及镜像文件处理
2.1下载Fabric源码下载Fabric源码是因为要用到源码中提到的列子和工具, 工具编译需要用到go语言环境, 因此需要把源码目录放到$GOPATH下. 通过1.3中go的安装配置, $GOPAT ...
- Hyperledger Fabric 1.0 从零开始(一)——吐槽
在HyperLedger/Fabric发布0.6的时候,公司就已经安排了一个团队研究这一块,后来也请IBM的专家组过来培训了一批人,不幸的是,这批人后来全走了,然后没过多久1.0就发布了.自从2017 ...
- Hyperledger Fabric 1.0 从零开始(一)
在HyperLedger/Fabric发布0.6的时候,公司就已经安排了一个团队研究这一块,后来也请IBM的专家组过来培训了一批人,不幸的是,这批人后来全走了,然后1.0就发布了.自从2017年7月H ...
- Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
6.1.平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)--运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名.可以指定单独节 ...
- Hyperledger Fabric 1.0 从零开始(三)——环境构建(内网/准离线)
有公网环境的服务器可以直接看 Hyperledger Fabric 1.0 从零开始(二)--环境构建(公网) ,本篇内容与上篇相似,只不过环境搭建需要在内网下,也就是网络被限制的情况下. 1:环境构 ...
- Hyperledger Fabric 1.0 从零开始(十三)——orderer分布式方案
简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群 ...
- Hyperledger Fabric 1.0 从零开始(二)——环境构建(公网)
1:环境构建 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先 ...
- Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用【补充】
在 Hyperledger Fabric 1.0 从零开始(十二)--fabric-sdk-java应用 中我已经把官方sdk具体改良办法,即使用办法发出来了,所有的类及文件都是完整的,在文章的结尾也 ...
- Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用
Hyperledger Fabric 1.0 从零开始(十)--智能合约 Hyperledger Fabric 1.0 从零开始(十一)--CouchDB 上述两章,最近网上各路大神文章云集,方案多多 ...
随机推荐
- vector中删除第k个元素的巧妙方法
假设我们定义了一个vector如下: vector<int> v;v.push_back(1);...v.push_back(255); 如果要删除第k个元素的话,应该这样写: (1)如果 ...
- 学习设计模式之MVC、MVP、MVVM
引言:认真学习了下广义MVC模式下前端怎么写,狭义的MVC其实是有一个变化过程:MVC MVP MVVM,网上看了很多的关于这方面的介绍,以前总是将视图数据逻辑写一个模块,最近尝试分开并用组件式的开发 ...
- 学习笔记TF049:TensorFlow 模型存储加载、队列线程、加载数据、自定义操作
生成检查点文件(chekpoint file),扩展名.ckpt,tf.train.Saver对象调用Saver.save()生成.包含权重和其他程序定义变量,不包含图结构.另一程序使用,需要重新创建 ...
- Ngnix+tomcat负载均衡
系统环境 Centos6.5 nginx1.4.7 https://nginx.org/download/nginx-1.4.7.tar.gz tomcat7.0.79 http://apache. ...
- Django创建应用、模型、配置后台自动管理
1.创建应用 python manage.py startapp myblog 2.应用结构 3.创建模型(models.py) from django.db import models # Crea ...
- github如何搜索资料
进入自己的主页,然后点击explore→trending; 或者google搜索,如github java 后端 请参考:http://mp.weixin.qq.com/s?__biz=MzA4NTQ ...
- mongodb菜鸟整理 2 C#Driver使用
一下载 从官网上下载... 二 引用 下载完了将其解压到某个文件夹内,打开vs建立一个工程 右键引用,找到刚才解压的目录,把里面说有的dll文件全部添加就好 三 命名空间 我都是先打然后alt+shi ...
- [2017-09-04]Abp系列——为什么值对象必须设计成不可变的
本系列目录:Abp介绍和经验分享-目录 这篇是之前翻备忘录发现漏了的,前阵子刚好同事又提及过这个问题,这里补上. 本文重点在于理解什么是值对象的不可变性. Abp的ValueObject以及EF的Co ...
- CSS3学习手记
--------------------CSS3新增选择器--------------------#E:nth-child(n):匹配元素类型为E且是父元素的第n个子元素#E:nth-last-chi ...
- snowflake主键生成策略
1.snowflake简介 在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同的特性,比如像并发巨大的业务要求ID生成效率高,吞吐大:比如某些银 ...