首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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版本的源码即可:

1cd /opt/gopath/src/github.com/hyperledger/fabric/2git checkout -b v1.0.0

本步骤也可直接在github上将源码下载至本地,再通过ftp上传至hyperledger目录。

如果没有git命令,还需要先执行以下命令,构建本地git环境。

yuminstallgit

最终目录在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-toolshyperledger/fabric-ordererhyperledger/fabric-peerhyperledger/fabric-couchdbhyperledger/fabric-kafkahyperledger/fabric-cahyperledger/fabric-ccenvhyperledger/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 或docker rmi-f

删除全部镜像命令如下:

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可以看到目录大致如下:

当所有的镜像文件都被打包后,可以通过如下命令格式来发送镜像:

通过上述命令可以将镜像文件远程拷贝至10.111.171.217远端服务器/tmp/docker/fabric-images目录下,这里是内网ip,如果是在内网的环境下,拷贝速度会很快,外网则根据服务器自身网络情况而定。

【注:离线环境或内网环境还是通过手工拷贝的方式吧,另外内网传输速度不尽人意的话,也用手工拷贝吧】

当远端服务器接收到所有的镜像文件后,可执行如下命令来加载这些镜像文件:

docker load < /tmp/docker/fabric-peer.tar

镜像加载完成后,可根据之前3的方案,将镜像tag都改为lastest。

关于本号

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180206G061HH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券