GO-DOCKER-Tensorflow-Fabric-1.0完整环境搭建

Fabric-1.0完整环境搭建

服务器端 :

 1. **GO语言的安装**
 2. **DOCKER的安装**
 3. **Tensorflow的安装**
 3. **Fabric源码的CLONE**
 4. **进行相关配置**

GO语言的安装

  • 下载 wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
  • 解压 sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
  • 编辑环境变量 vim /etc/profile
    • GOPATH export GOPATH=/opt/gopath
    • PATH export PATH=$PATH:/usr/local/go/bin
    • 复制完之后 按下ESC + : + wq + 回车
  • 编辑保存 source /etc/profile
  • 使其修改生效。随后可通过下述命令: echo $PATH
  • 回到目录 cd ~

Ubuntu安装Docker CE

系统要求:64位 、Ubuntu16.0.4

卸载旧版本
旧版本的Docker称为docker或者docker-engine,使用以下命令卸载旧版本:

$ sudo apt-get remove docker \
               docker-engine \
               docker.io

在测试或开发环境中Docker官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu系统上可以使用这套脚本安装:

$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

启动dockerCE

$ sudo systemctl enable docker
$ sudo systemctl start docker

Docker-Compose的安装

Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:

sudo apt-get install python-pip

然后是安装docker-compose,我们从官方网站(https://github.com/docker/compose/releases)下载也可以从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose 
chmod +x /usr/local/bin/docker-compose

Tensorflow的安装

关于TensorFlow

TensorFlow 随着AlphaGo的胜利也火了起来。
google又一次成为大家膜拜的大神了。google大神在引导这机器学习的方向。 同时docker
也是一个非常好的工具,大大的方便了开发环境的构建,之前需要配置安装。 看各种文档,现在只要一个 pull 一个 run
就可以把环境弄好了。 同时如果有写地方需要个性化定制,直接在docker的镜像上面再加一层补丁就好了。
自己的需求就能满足了,同时还可以将这个通用的方法分享出去。

下载TensorFlow images

使用hub.docker.com的镜像
docker pull tensorflow/tensorflow:latest

启动镜像

启动命令,设置端口,同时配置volume 数据卷,用于永久保存数据。加上 –rm 在停止的时候删除镜像。

sudo mkdir -p /data/tensorflow/notebooks
docker run -it --rm --name myts -v /data/tensorflow/notebooks:/notebooks -p 8888:8888 daocloud.io/daocloud/tensorflow:latest

然后打开浏览器测试吧~~

import tensorflow as tf
a = tf.constant(10)
b = tf.constant(32)

with tf.Session():
    c = tf.add(a,b)
    print(c)
    print(c.eval())

下载Fabric源代码

我们可以使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码:

mkdir -p $GOPATH/github.com/hyperledger 
cd $GOPATH/src/github.com/hyperledger 
git clone https://github.com/hyperledger/fabric.git

我们可以使用Git命令下载源码,也可以使用go get命令,偷懒一点,我们直接用go get命令获取最新的Fabric源码

go get github.com/hyperledger/fabric

检查是否为1.0版本、实验阶段、仅需要1.0

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

Fabric Docker镜像的下载

直接拉取即可,因为配置了快速的国内阿里云镜像
cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

然后检查docker images

 sudo docker images
root@***

> 如果出现、代表成功:

***/home/lantian/go/src/github.com/hyperledger/fabric/examples/e2e_cli# docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
daocloud.io/daocloud/tensorflow   latest              414b6e39764a        5 weeks ago         1.27GB
hello-world                       latest              f2a91732366c        4 months ago        1.85kB
hyperledger/fabric-tools          latest              0403fd1c72c7        9 months ago        1.32GB
hyperledger/fabric-tools          x86_64-1.0.0        0403fd1c72c7        9 months ago        1.32GB
hyperledger/fabric-couchdb        latest              2fbdbf3ab945        9 months ago        1.48GB
hyperledger/fabric-couchdb        x86_64-1.0.0        2fbdbf3ab945        9 months ago        1.48GB
hyperledger/fabric-kafka          latest              dbd3f94de4b5        9 months ago        1.3GB
hyperledger/fabric-kafka          x86_64-1.0.0        dbd3f94de4b5        9 months ago        1.3GB
hyperledger/fabric-zookeeper      latest              e545dbf1c6af        9 months ago        1.31GB
hyperledger/fabric-zookeeper      x86_64-1.0.0        e545dbf1c6af        9 months ago        1.31GB
hyperledger/fabric-orderer        latest              e317ca5638ba        9 months ago        179MB
hyperledger/fabric-orderer        x86_64-1.0.0        e317ca5638ba        9 months ago        179MB
hyperledger/fabric-peer           latest              6830dcd7b9b5        9 months ago        182MB
hyperledger/fabric-peer           x86_64-1.0.0        6830dcd7b9b5        9 months ago        182MB
hyperledger/fabric-javaenv        latest              8948126f0935        9 months ago        1.42GB
hyperledger/fabric-javaenv        x86_64-1.0.0        8948126f0935        9 months ago        1.42GB
hyperledger/fabric-ccenv          latest              7182c260a5ca        9 months ago        1.29GB
hyperledger/fabric-ccenv          x86_64-1.0.0        7182c260a5ca        9 months ago        1.29GB
hyperledger/fabric-ca             latest              a15c59ecda5b        9 months ago        238MB
hyperledger/fabric-ca             x86_64-1.0.0        a15c59ecda5b        9 months ago        238MB

阿里云的一点小坑

说到这里应该已经到达创世区块的环节了,
但是、、、在阿里云上,会出现一些小坑(O__O “…基本折腾了三天)
peer,orderer一些yaml加载中出现问题。

(⊙v⊙)嗯!!!!!!

不过是可以解决的~~
只需要修改几个yaml就可以运行了~
先回退到当前demo目录作为切入点
我这里从理解记忆角度出发,首先观察启动.sh中加载的yaml文件,这些就是需要我们修改的(因为默认加载会失败)

cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli
ls(会看到network_setup.sh)
vi network_setup.sh(那咱就进去看看咋回事)
{
.......然后就发现啦~哦~原来是加载这两个yaml出错了
COMPOSE_FILE=docker-compose-cli.yaml
COMPOSE_FILE_COUCH=docker-compose-couch.yaml
.......
}
cd base(那么这个是基本,里面同样有个yaml需要被加载)
ls (猜猜看是什么呀~~O(∩_∩)O~)
vi docker-compose-base.yaml(没错!就是你了)
{
这次要做一点骚操作。。。
看到环境变量了没有,environment,那么就在这个环境变量的尾部~照猫画虎的加上这一行代码
....
- GODEBUG=netdns=go
....
}

cd $GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/(回来这里)
{
    同样骚操作。。。
    vi compose-cli.yaml
    vi docker-compose-couch.yaml
}
好啦、阿里云的坑、到这里就已经暂时填满~\(≧▽≦)/~啦啦啦

启动Fabric网络并完成ChainCode的测试

要记得、在启动前、要留心是否已经启动。 如果启动了、就需要先关闭才能启动。

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down(已经启动的话、或者不知道有没有启动)
./network_setup.sh up

这个做了以下操作:

7.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

7.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

7.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

7.4基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

7.5在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

手动交易

官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:

docker exec -it cli bash

运行以下命令可以查询a账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

留心观察,result是不是查询出来 a 是90块钱。

然后,我们试一试把a账户的余额再转20元给b账户,运行命令:

peer chaincode invoke -o orderer.example.com:7050  --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

然后,如果出现一大堆英文,又没有Exception和error的,那么恭喜你!成功转账。
(^o^)/~
那么猜想,b应该多了20块钱,a则少了20块钱,再试试看!!!

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

相信聪明的傻温已经明白a和b、有多少钱啦!!!

最后记得,离开的时候。记得把fabric网络关闭哦

exit
cd ~$GOPATH/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down

祝票票学习愉快。(๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油

(๑•̀ㅂ•́)و✧加油

hhh到这里是不是就玩得很开心成功了、如果搭建的时候、出现任何问题、都可以在评论榜上提问哦。

学习了四篇文章
http://www.cnblogs.com/studyzy/p/7437157.html
https://yeasy.gitbooks.io/docker_practice/content/install/ubuntu.html
https://blog.csdn.net/freewebsys/article/details/70237003
https://yq.aliyun.com/articles/238940

猜你喜欢

转载自blog.csdn.net/qq_37989365/article/details/79861112