2.1下载Fabric源码
下载Fabric源码是由于要用到源码中提到的列子和工具, 工具编译须要用到go语言环境, 所以须要把源码目录放到$GOPATH下。 经过1.3中go的安装配
置, $GOPATH设置为/opt/gopath。
咱们可使用Git命令下载源码, 也可使用go get命令, 偷懒一点, 咱们直接用go get命令获取最新的Fabric源码:
go get github.com/hyperledger/fabric
这个可能等的时间比较久, 等完成后, 咱们能够在~/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的视图正常状况下以下所示:html
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标签,
https://hub.docker.com/r/hyperledger/fabric-peer/tags/ ,
查看当前fabric-peer最新版本号, 根据咱们所使用的操做系统状况, 选择x86_64-1.0.0版本, 故最终执行的docker下载命令以下:
docker pull hyperledger/fabric-peer:x86_64-1.0.0
而fabric环境主要须要的镜像有如下几种:
如下几种镜像都须要制定特定的版本:x86_64-1.0.0 红色的三个镜像是最基本最重要的三个, 能够支持测试版本, 若是只是为了测试, 那么能够先安装这三个。
hyperledger/fabric-tools
hyperledger/fabric-orderer:x86_64-1.0.0
hyperledger/fabric-peer:x86_64-1.0.0
hyperledger/fabric-couchdb
hyperledger/fabric-kafka
hyperledger/fabric-ca:x86_64-1.0.0
hyperledger/fabric-ccenv
hyperledger/fabric-baseimage:x86_64-0.4.0
根据上述方案,能够将这些必要的镜像由docker服务所有下载至本地,并最终使用docker-compose来启动对应的镜像服务。
为了方便docker-compose的配置,咱们将全部的镜像tag都改成latest,执行以下格式的命令:
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
或者 docker tag old-image[:old-tag] new-image[:new-tag]
例子
docker tag 0403fd1c72c7 docker.io/hyperledger/fabric-tools:latest
或者: docker tag entel_zmc_images entel_zmc_images:zmc_base
latest
这个latest其实在使用中不是最新的意思,而是默认值(defalut)的意思。
也就是说,若是在tag为可选的命令中,咱们没有写上tag,如 docker pull entel_zmc_images:zmc_base vs docker pull entel_zmc_images ,前
者有肯定的tag,然后者没有,这时系统会自动添加一个:latest标签,而后去匹配。
这时若是latest对应的镜像不存在就会报错!
运行镜像
理解了latest,那么下面两种方式就很简单了。
# 运行默认镜像,默认会找tag
docker run entel_zmc_images
# 运行指定tag的镜像
docker run entel_zmc_images:zmc_base
全部的镜像文件及版本号修改完成后,执行以下命令:
docker images
其结果视图应该以下:git
若是下载下来的镜像有问题, 能够执行以下命令删除指定Image ID的镜像
docker rmi <image id>
或 do
cker rmi -f<image id>
删除所有镜像命令以下:
docker rmi $(docker images -q)
或 do
cker rmi -f $(docker images -q)
docker镜像的版本控制
若是须要升级某个docker镜像,咱们能够这样作。
1.给每一个新生成的镜像都打上相应版本的tag。此时可能存在image:latest、image:v一、image:v2等。
2.咱们要从v1升级到v2,首先咱们将导入的v2镜像强制重命名为image:latest,命令为docker tag -f image:v2 image:latest
3.docker stop以前正在运行的容器
4.启用docker run image,此时image的等价镜像image:latest就是最新的V2镜像。
总结下步骤:load/tag/stop/run
2.3镜像备份和拷贝(该步骤并不是必须, 若无此需求, 能够略过本步骤)
上述HyperLedger/Fabric镜像数量较多且容量需求大, 一套基本的服务镜像可达10G左右, 若是在多台服务器上部署, 会耽误不少时间。 所以, 对于上述已经下载至本
地的镜像, 咱们须要使用docker save命令来备份, 并经过scp命令来将这些镜像文件拷贝至其余服务器。
以镜像hyperledger/fabric-peer为例:
在执行sava以前, 须要先查询当前镜像包的Image ID, 执行命令以下:
docker images
获得以下结果, 能够看到咱们已经下载下来的fabric-peer的Image ID是6830dcd7b9b5github
咱们能够执行以下命令在/tmp目录下来生成该镜像的tar包:
docker save 6830dcd7b9b5> /tmp/docker/fabric-images/peer.tar
上述命令结构为docker save IMAGEID(镜像id) >(文件路径及文件名)
根据上述命令, 咱们对其余已经下载下来的fabric镜像分别执行打包操做, 最后在/tmp/docker/fabric-images目录下执行ls查看当前目录镜像文件, 正常状况下会看到以下视图:docker
该视图只截取了一部分,且该视图仅ls命令结果用做参考。服务器
经过FTP能够看到目录大体以下:网络
, 且该视图仅ls命令结果用做参考。经过FTP能够看到目录大体以下: 工具
声明:本教程参考 深蓝 和 Aberic博客编写而成,连接: http://www.cnblogs.com/studyzy/p/7237287.html 和 https://www.cnblogs.com/aberic/p/7527831.html, 且该视图仅ls命令结果用做参考。经过FTP能够看到目录大体以下: , 且该视图仅ls命令结果用做参考。经过FTP能够看到目录大体以下: 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。 测试