本文记录了在virtualBox6.1.8上的ubuntu16.04.7上使用容器docker18.09.7安装fanbric最新版本,搭建单机多节点fabric基础网络的过程。

fabric环境配置

  • 环境准备:使用vscode插件,ssh连接ubuntu。
  • 进行换源
  • 更新软件源
sudo apt update

sudo apt upgrade

安装相关环境

docker安装

  • 安装docker.io
sudo apt install docker.io

sudo systemctl start docker

sudo systemctl enable docker

docker --version
  • 将非root用户添加到docker组。
sudo groupadd docker  # 添加docker组

sudo usermod -aG docker kate #将当前用户添加到docker组里面

重启电脑,使用docker images测试。

  • 安装docker compose
sudo apt install docker-compose

docker-compose --version

cURL安装

sudo apt-get install curl

GO语言环境安装

  • 从官网下载最新版本:
curl -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
  • 解压:
tar -xvf go1.10.3.linux-amd64.tar.gz

得到 ./go/ 文件夹:

ls go/

计算机的输出是:

api      bin              CONTRIBUTORS  favicon.ico  LICENSE  PATENTS  README.md   src   VERSION
AUTHORS  CONTRIBUTING.md  doc           lib          misc     pkg      robots.txt  test
  • 进入 go 可执行文件目录:
cd ./go/bin/

查看文件

ls

计算机的输出:

go  godoc  gofmt

其中上面三个文件都是绿色,说明是可执行文件。

  • 得到当前目录的绝对路径
pwd

计算机的输出:

/home/flyq/workspace/go/bin

因此拿着这个绝对论据去设置go的环境变量(就是去修改 .bashrc 文件):

用编辑器打开 ~/.bashrc 文件,比如我是用 vim:

vim ~/.bashrc

在最后一行添加:(具体添加的是刚才查询到的路径)

export PATH=$PATH:/home/kate/fabric/go/bin/

然后保存好,更新一下:

source ~/.bashrc

运行go version出现以下结果即表示安装成功:

go version 
go version go1.10.3 linux/amd64s
  • 最后设置一下 GOPATH 环境变量,同样是修改 ~/.bashrc 文件:
  1. 创建一个新建目录 gopath:mkdir gopath;
  2. 进入这个目录:cd gopath;
  3. 创建需要的文件夹:mkdir src bin pkg;
  4. 得到当前目录的绝对路径:pwd;
  5. 将添加这两行到 ~/.bashrc下面:vim ~/.bashrc;
source ~/.bashrc

go 环境已经安装并配置好了.

安装 gopm

注:如果你的终端环境能翻墙,这步跳过。 如果不能翻墙,那么就无法使用 go get 来获取对应的项目,这里推荐用 gopm get 来获取对于项目,因为它是无需翻墙的。

拉去 gopm 代码:

cd $GOPATH/src

mkdir -p github.com/gpmgo/

cd ./github.com/gpmgo

git clone https://github.com/gpmgo/gopm.git

cd ./gopm

go build

ls

然后可以看到会生成一个可执行文件 gopm,把它复制到 $GOPATH/bin 下面即可:

cp ./gopm $GOPATH/bin

运行:

gopm --version

得到输出:

Gopm version 0.8.8.0307 Beta

说明安装成功。

接下来你就可以在任意路径下使用 gopm get 来代替 go get 了。

Fabric环境部署&运行示例

  • 下载fabric源代码
mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
  • docker组件下载
  • 搜索镜像
docker search fabric
  • 拉取合适镜像
docker pull hyperledger/fabric-ca
docker pull hyperledger/fabric-orderer
docker pull hyperledger/fabric-peer
docker pull hyperledger/fabric-ccenv
docker pull hyperledger/fabric-tools
docker pull hyperledger/fabric-baseos
docker pull hyperledger/fabric-kafka
docker pull hyperledger/fabric-zookeeper
docker pull hyperledger/fabric-couchdb
  • 主要节点的依赖关系:

遇到的问题

  1. push镜像的时候:
error pulling image configuration: Get https://registry-1.docker.io/v2/hyperledger/fabric-ca/blobs/sha256:dbbc768aec79740d023872893260a3be124b657782593a44676ffa6112977883: net/http: TLS handshake timeout

原因:官方的仓库下载速度太慢

解决办法:换源

  • 使用https://www.daocloud.io/mirror#accelerator-doc
    该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
sudo systemctl restart docker //重启docker
  • 或者换阿里的镜像(阿里的更加稳定一点)
    修改/etc/docker/daemon.json文件配置,没有则新建
{
  "registry-mirrors": ["https://m3dz4myl.mirror.aliyuncs.com"]
}

重启daemon

systemctl daemon-reload

重启docker服务

systemctl  restart docker