A最初篇: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章