该问题说明可以解决6.1、平台特定使用的二进制文件配置第一步的问题。能够选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本说明,具体在6.1中会从新指向本步骤。html
通常状况下,咱们会参照官网来完成第一个网络测试,在该在线文档中会让咱们去下载一个fabric-samples,下载地址在github上,咱们须要将其下载至本地是一个fabric-samples-release文件夹,将其改名为fabric-samples随后上传至opt/gopath/src目录下。linux
按照官网提示执行的命令是没法运行起first-network这个项目,该demo须要先下载 Platform-specific Binaries(特定的二进制文件),按照官方文档中的描述,须要先执行以下命令:git
curl -sSL https://goo.gl/iX9dek | bash
上述命令会下载自动化部署脚本,同时也会下载平台特定使用的二进制文件才cryptogen、configtxgen、configtxlator以及peer,把他们放到上述仓库的bin目录下。github
一般执行上述命令并不能下载,即使是能下载,速度也奇慢无比,故此,咱们离线下载相关二进制文件来执行上述操做。docker
能够在http://download.csdn.net/download/jiayiyangzhu/10245492执行下载1.0版本的,在https://download.csdn.net/download/jiayiyangzhu/10330267执行下载1.1版本的,积分默认最低2…bootstrap
在官网给出的执行命令中并无给出离线下载地址,且官网也没有离线部署说明,咱们能够在1.4.2中下载的fabric源码中找到下载地址,在/opt/gopath/src/github.com/hyperledger/fabric/scripts目录下有一个bootstrap-1.0.0.sh脚本文件,事实上若是外网访问条件优越的状况下,直接运行该脚本便可下载全部所需的fabric镜像文件及官方指定所需的二进制文件。bash
打开bootstrap-1.0.0.sh(目前最新版为1.0.0,以实际为准),找到其中对“Downloading platform binaries”的输出行,目前所见是“echo "===> Downloading platform binaries"”,查看其指向的下载地址,能够获得一个官网提供的离线下载网址,根据上下文意思及当前咱们所使用的版本信息,能够获得最终的离线下载文件地址,下载该文件到本地。网络
根据官网的介绍,解压后会获得一个bin文件夹,将其解压至/opt/gopath/src/github.com/hyperledger/fabric-samples目录下便可运行first-network等项目。curl
进入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目录下,文件结构以下图所示:测试
network_setup.sh是一件测试脚本,该脚本启动5个docker容器,其中4个容器运行peer节点和1个容器运行orderer节点,它组成一个Fabric集群。另外还有一个cli容器用于执行建立channel、加入channel、安装和执行chaincode等操做。测试用的chaincode定义了两个变量,在实例化的时候会给这两个变量赋予了初始值,并经过invoke操做可使两个变量的值发生变化。
经过如下命令执行测试:
bash network_setup.sh up
接下来会有许多的调试信息,具体可参考e2e_cli目录下的script/script.sh文件,当终端出现如下信息时,说明测试经过,全部部件正常工做:
这个命令能够在本机启动4+1的Fabric网络而且进行测试,跑Example02这个ChainCode。咱们能够看到每一步的操做,最后确认单机没有问题。确认咱们的镜像和脚本都是正常的,咱们就能够关闭Fabric网络,继续咱们的多机Fabric网络设置工做。关闭Fabric命令:
bash network_setup.sh down
该Fabric网络集群测试环境在Linux内核低版本上可能会出现问题,这是旧版内核的bug,好比在执行bash network_setup.sh up的时候会出现以下错误:
即执行chaincode初始化的时候报错,致使集群单机没法启动。
解决方案,使用最新版稳定版的docker(笔者写文档时的最新稳定版为:17.06.0-ce),将Linux内核升级到最新版,笔者原先使用的Linux内核是3.10,出现了上述问题,目前笔者使用的内核版本是4.12.5-1.e17,可以完美运行Fabric集群环境。
具体能够参考Can´t specify memory limit in docker run and docker compose