记一次ubuntu18 采用docker部署Fabric1.4(一)
关于Docker和Fabric1.4下载(包含go_lang配置)
00 导言
由 Linux 基金会发起创建的开源区块链分布式账本 —— Hyperledger Fabric,已经迎来了 1.4.0 版本。该项目着重于性能和可靠性,以及推动区块链和分布式账本技术的跨行业协作。Hyperledger Fabric 可用于全球供应链管理、金融交易、资产账和去中心化的社交网络等场景,但无意以此来构建一种加密货币。
下面我们将带着大家一步一步来搭建自己的HyperLedger Fabric开发环境。老司机已经发车,赶紧跟上。。。
01 操作系统准备
我们选择了ubuntu18.04这个版本。
02 安装curl
后面的步骤我们需要用到curl命令来下载安装脚本和其他文件,所以需要先安装curl,如果已经安装可略过。 第1步: 安装curl,如果已经安装可略过
$ sudo apt install curl
03 安装docker-ce
docker分两个怎么,分为docker-ce(社区版)和docker-ee(企业版)。作为穷人阶级代表的我,只能无奈选择使用社区版。在ubuntu操作系统上安装docker-ce,实际上docker官方提供了三种方式。
1. 通过docker仓库安装
2. 下载.deb包安装
3. 通过安装脚本安装
在这里我们选择第3种方式进行安装
第1步: 使用curl下载安装脚本
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ ls get*
get-docker.sh
第2步: 执行脚本进行安装,这一步需要等待一阵时间。
$ sudo sh get-docker.sh
第3步: 设置成非root用户也能执行docker,需要将普通用户加入docker组,$USER代表当前用户
$ sudo usermod -aG docker $USER
第4步: 执行hello-world镜像,验证docker是否安装成功。如果看到 Hello from Docker! This message shows that your installation appears to be working 这句话表明安装成功了。
$ sudo docker run hello-world
...... 一堆提示信息
Hello from Docker!
This message shows that your installation appears to be working correctly.
.....一堆提示信息
04 安装docker-compose
Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器。HyperLedger Fabric需要用到docker-compose,所以我们提前安装。
第1步: 下载某个版本的docker-compose,下载到/usr/local/bin/docker-compose目录。更多版本请访问:https://github.com/docker/compose/releases
$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
这里解释一下: uname -s 得到Linux,uname -m 得到x86_64。可在复制到命令行执行查看。
第2步:允许其他用户执行compose相关命令
$ sudo chmod +x /usr/local/bin/docker-compose
第3步:验证安装是否成功
$ docker-compose --version
docker-compose version 1.21.2, build a133471
05 安装go
第1步:下载golang的tar包
$ wget https://storage.googleapis.com/golang/go1.11.linux-amd64.tar.gz
由于众所周知的原因,google相应的站点被墙访问不了(兄弟,接受现实吧),我们得想其他办法。推荐从第三方镜像源下载golang的tar包,推荐镜像源 https://studygolang.com/dl,用浏览器打开该网址,下载linux的tar包。 或者直接:
$ wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
第2步:解压tar包到/usr/local
$ sudo tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz
第3步:创建go目录
$ mkdir $HOME/go
第4步:用vi打开/etc/profile,配置环境变量
$ sudo vi /etc/profile
增加下面的环境变量,保存退出
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN:$GOPATH/bin
使环境变量立即生效
$ source /etc/profile
第5步:检测go是否安装好
$ go version
go version go1.11 linux/amd64
06 安装python2.7
ubuntu18.04自带了python3, 安装2.7使用下面命令安装
$ sudo apt install python
$ python -V
07 安装并检测git
$ sudo apt update
$ sudo apt install git
$ git version
08 安装并检测nodejs
$ cd /opt
$ sudo wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz
$ sudo tar xvf node-v10.15.1-linux-x64.tar.xz
$sudo mv node-v10.15.1-linux-x64 nodejs
配置环境变量
$ sudo vi /etc/profile
#在最后加入
export NODE_HOME=/opt/nodejs
export PATH=$PATH:$NODE_HOME/bin
$ source /etc/profile
$ node -v
$ npm -v
09 下载fabric
先创建放置的目录,然后进入该目录,用git克隆fabric下来
$ cd $GOPATH
$ mkdir -p src/github.com/hyperledger
$ cd src/github.com/hyperledger
$ git clone https://github.com/hyperledger/fabric.git
10 执行引导脚本
这一步通过运行脚本去git clone fabric-sample(官方提供的示例),还会下载相应的二进制可执行文件,而且还会拉取docker镜像。下载过程需要耗费比较长的时间。
$ ./fabric/scripts/bootstrap.sh 1.4.0 1.4.0 0.4.14
注1:如果下载卡住了,可以ctrl+c取消,然后重新执行bootstrap.sh脚本文件。如果觉得下载时间太长(可能一上午都下不完)。
注2:也可以直接下载fabric的源码来编译生成二进制可执行文件,然后创建bin目录,并将生成好的二进制文件拷贝到bin目录下。请查看文章《编译fabric1.4.0和fabric-ca1.4.0源码生成二进制可执行文件》。如果是采用编译生成的方式,则需要单独拉取docker镜像,-b表示不下载二进文件了,只拉取镜像,-s 表示不下载fabric-samples
#单独拉取docker镜像,-b表示不下载二进文件了,只拉取镜像,-s 表示不下载fabric-samples
$ ./fabric/scripts/bootstrap.sh -s -b 1.4.0 1.4.0 0.4.14
11 查看是否下载成功
下载完,可以直接执行ls,可以看到在hyperledger这个目录下多了一个fabric-samples,进去fabric-samples可以查看bin目录下是否有二进制文件,还可以执行docker images查看已经下载的docker相关镜像
$ cd fabric-samples
$ ls -l bin
总用量 197000
-rwxr-xr-x 1 bob bob 20300448 2月 13 15:26 configtxgen
-rwxr-xr-x 1 bob bob 22434232 2月 13 15:26 configtxlator
-rwxr-xr-x 1 bob bob 13450560 2月 13 15:26 cryptogen
-rwxr-xr-x 1 bob bob 21415240 2月 13 15:26 discover
-rwxr-xr-x 1 bob bob 20118792 2月 13 15:27 fabric-ca-client
-rwxr-xr-x 1 bob bob 23187624 2月 13 15:27 fabric-ca-server
-rwxr-xr-x 1 bob bob 829 2月 13 15:26 get-docker-images.sh
-rwxr-xr-x 1 bob bob 12088400 2月 13 15:26 idemixgen
-rwxr-xr-x 1 bob bob 30441328 2月 13 15:26 orderer
-rwxr-xr-x 1 bob bob 38267960 2月 13 15:26 peer
$ docker images
===> List out hyperledger docker images
hyperledger/fabric-tools 1.4.0 0a44f4261a55 4 weeks ago 1.56GB
hyperledger/fabric-tools latest 0a44f4261a55 4 weeks ago 1.56GB
hyperledger/fabric-ccenv 1.4.0 5b31d55f5f3a 4 weeks ago 1.43GB
hyperledger/fabric-ccenv latest 5b31d55f5f3a 4 weeks ago 1.43GB
hyperledger/fabric-orderer 1.4.0 54f372205580 4 weeks ago 150MB
hyperledger/fabric-orderer latest 54f372205580 4 weeks ago 150MB
hyperledger/fabric-peer 1.4.0 304fac59b501 4 weeks ago 157MB
hyperledger/fabric-peer latest 304fac59b501 4 weeks ago 157MB
hyperledger/fabric-ca 1.4.0 1a804ab74f58 4 weeks ago 244MB
hyperledger/fabric-ca latest 1a804ab74f58 4 weeks ago 244MB
hyperledger/fabric-zookeeper 0.4.14 d36da0db87a4 4 months ago 1.43GB
hyperledger/fabric-zookeeper latest d36da0db87a4 4 months ago 1.43GB
hyperledger/fabric-kafka 0.4.14 a3b095201c66 4 months ago 1.44GB
hyperledger/fabric-kafka latest a3b095201c66 4 months ago 1.44GB
hyperledger/fabric-couchdb 0.4.14 f14f97292b4c 4 months ago 1.5GB
hyperledger/fabric-couchdb latest f14f97292b4c 4 months ago 1.5GB
11 添加环境变量
用vi打开/etc/profile
$ sudo vi /etc/profile
增加下面的环境变量,保存退出
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$GOPATH/src/github.com/hyperledger/fabric-samples/bin
使环境变量立即生效
$ source /etc/profile
检验环境变量是否成功
$ fabric-ca-client version
fabric-ca-client:
Version: 1.2.0
Go version: go1.10
OS/Arch: linux/amd64
13 总结
通过官方提供的引导脚本,我们可以快速的准备好HyperLedger Fabric 1.4.0 网络的运行环境,前提是我们需要安装好docker-ce和docker-compose。另外官方给的引导脚本路径访问不了,因此我们可以直接去到HyperLedger Fabric的github上找到相应的脚本下载下来,然后再运行。
Docker的一些常用操作指令
1、启动所有容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
2、关闭所有容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
3、删除所有容器
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
4、删除所有镜像(慎用)
docker rmi $(docker images | awk '{print $3}' |tail -n +2)
5、查看所有镜像
docker images
6、查看所有运行容器
docker ps -a
7、查看某个容器日志
docker logs [options] container
options说明:
-f : 跟踪日志输出
--since : 显示某个开始时间的所有日志
-t : 显示时间戳
--tail : 仅列出最新N条容器日志
8、用的最多的命令(我在执行fabric过程中需要疯狂删除容器)
#可以输入如下命令停止掉对应的容器,然后删除
docker ps -a
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker volume prune