安装 Docker
docker版本最好是1.13或者更高版本。
$ curl -fsSL https://get.docker.com/ | sh
安装docker后修改docker配置文件。
docerk 1.11或者更高版本,以systemd方式管理docker,默认没有创建配置文件,需要自己创建/etc/systemd/system/docker.service.d/docker.conf
$ sudo mkdir /etc/systemd/system/docker.service.d
$ sudo vi /etc/systemd/system/docker.service.d/docker.conf
详情参考官网文档:
https://docs.docker.com/engine/admin/systemd/
然后在docker.conf文件中添加启动参数:
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --api-cors-header='*'"
添加配置文件后需要加载然后重启docker:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
安装 docker-compose
首先,安装 python-pip 软件包。
$ sudo aptitude install python-pip
安装 docker-compose(推荐为 1.8.0 及以上版本)。
$ sudo pip install docker-compose>=1.8.0
获取 Docker 镜像
docker pull yeasy/hyperledger-fabric-base:latest \
&& docker pull yeasy/hyperledger-fabric-peer:latest \
&& docker pull yeasy/hyperledger-fabric-orderer:latest \
&& docker pull yeasy/hyperledger-fabric-ca:latest \
&& docker pull yeasy/blockchain-explorer:latest \
&& docker tag yeasy/hyperledger-fabric-peer hyperledger/fabric-peer \
&& docker tag yeasy/hyperledger-fabric-orderer hyperledger/fabric-orderer \
&& docker tag yeasy/hyperledger-fabric-ca hyperledger/fabric-ca \
&& docker tag yeasy/hyperledger-fabric-base hyperledger/fabric-baseimage \
&& docker tag yeasy/hyperledger-fabric-base hyperledger/fabric-ccenv:x86_64-1.0.0-preview
启动 fabric 1.0 网络
下载 Compose 模板文件。
$ git clone https://github.com/yeasy/docker-compose-files
进入 hyperledger/1.0 目录,查看包括若干模板文件,功能如下。
peers.yml: 包含 peer 节点的服务模板。
docker-compose.yml: 启动 1 个 最小化的环境,包括 1 个 peer 节点、1 个 Orderer 节点、1 个 CA 节点。
在启动之前最好关闭防火墙。
$ systemctl stop firewalld
通过如下命令快速启动。
$ docker-compose up
注意输出日志中无错误信息。
查看系统中的容器
$ docker ps
应该有三个容器
hyperledger/fabric-peer
hyperledger/fabric-orderer
hyperledger/fabric-ca
测试 chaincode 操作
启动 fabric 网络后,可以进行 chaincode 操作,验证网络启动正常。
部署 chaincode
通过如下命令进入容器 peer0。
$ docker exec -it fabric-peer0 bash
在容器中执行部署命令 install 和 instantiate
peer chaincode install -n test_cc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a","100","b","200"]}' -v v0
注意查看日志,正确执行会返回,否则会报错
Installed remotely response:<status:200 payload:"OK" >
[main] main -> INFO 003 Exiting.....
之后执行 peer chaincode instantiate 命令
peer chaincode instantiate -n test_cc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a","100","b","200"]}' -v v0 -o orderer0:7050
Response:
[main] main -> INFO 009 Exiting.....
查询 chaincode
对部署成功的 chaincode 执行查询操作,查询 a 的余额。
peer chaincode query -n test_cc -c '{"Args":["query","a"]}'
Response:
Query Result: 100
[main] main -> INFO 005 Exiting.....
或者也可以使用以下方式查询
peer chaincode invoke -n test_cc -c '{"Args":["query","a"]}' -o orderer0:7050
Response:
INFO 007 Invoke result: version:1 response:<status:200 message:"OK" payload:"100"
INFO 008 Exiting.....
以上就已经成功完成了Hyperledger Fabric v1.0的部署,enjoy!
本文主要内容来自https://github.com/yeasy/blockchain_guide,感谢杨博士的工作。