本文记录在Arm64架构的CentOS7服务器上搭建Fabric环境的流程,该主机可以访问公网但是不方便访问Github和Docker Hub。
文章目录
- 一、软件包管理器
- 二、基本软件
- [三、Docker和Docker Compose](#三、Docker和Docker Compose)
- Golang
- 五、Java
- 六、Fabric
-
- [6.1. 测试网络项目源代码](#6.1. 测试网络项目源代码)
- [6.2. 二进制文件](#6.2. 二进制文件)
- [6.3. 镜像文件](#6.3. 镜像文件)
- 七、参考(部分)
一、软件包管理器
错误:
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=aarch64&repo=os&infra=stock error was14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"
原因:CentOS7官方源已停止更新,导致源无法使用,需要换为国内镜像源。
备份:
bash
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
换源:
bash
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-altarch-7.repo
清理YUM缓存并生成新的缓存:
bash
yum clean all
yum makecache
测试新的YUM源:
bash
yum search vim
二、基本软件
bash
yum update -y
yum install wget -y
yum install git -y
yum install tree -y
错误:安装jq时提示没有可用的软件包。
原因:该软件包在第三方的yum源里面,而不在官方yum源里面。解决的方法就是安装epel源。
bash
yum install epel-release -y
yum update -y
yum install jq -y
三、Docker和Docker Compose
安装必要的组件:
bash
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查询可安装的Docker版本:
bash
yum list docker-ce --showduplicates | sort -r
安装:
bash
yum -y install docker-ce-26.1.4
出现如下问题时:
编辑
/etc/yum.repos.d/docker-ce.repo
文件,将[docker-ce-test]
下方的enabled=0
修改为enabled=1
。
bash
systemctl start docker
systemctl enable docker
docker version
注1:安装Docker时会自动安装插件(plugin)式的Docker Compose(命令为:
docker compose xxx
),但是我们需要二进制文件形式的(命令为:docker-compose xxx
)。
对于CentOS7.9,使用yum命令安装的docker-compose的版本为1.15,不符合要求。从Github(https://github.com/docker/compose/releases)下载符合版本要求和架构要求的docker-compose二进制文件,例如:
https://github.com/docker/compose/releases/download/v2.33.0/docker-compose-linux-aarch64
保存到/usr/bin/
下并重命名为docker-compose,赋予可执行权限即可。
注2:从Docker Compose v2.0开始,YAML文件中的version字段已经不再需要,后续使用时的相关警告信息可以忽略。
Golang
下载并解压:
bash
wget https://dl.google.com/go/go1.22.4.linux-arm64.tar.gz
tar -C /usr/local -zxvf go1.22.4.linux-arm64.tar.gz
打开/etc/profile
文件:
bash
vim /etc/profile
在文件的最后添加如下内容:
bash
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
使用source
命令使之生效:
bash
source /etc/profile
验证Golang的安装是否成功:
bash
go version
配置代理和Modules:
bash
export GOPROXY=https://goproxy.cn,direct
export GO111MODULE=on
五、Java
bash
yum install java-11-openjdk.aarch64 -y
java --version
六、Fabric
6.1. 测试网络项目源代码
克隆测试网络的仓库:
bash
git clone https://gitee.com/hyperledger/fabric-samples.git
6.2. 二进制文件
在有网络环境(本地)下载二进制文件的压缩文件hyperledger-fabric-linux-arm64-2.5.9.tar.gz
和hyperledger-fabric-ca-linux-arm64-1.5.12.tar.gz
,上传到服务器得到/fabric-samples
文件夹下。
解压压缩文件并赋予可执行权限:
bash
tar -zxvf hyperledger-fabric-linux-arm64-2.5.9.tar.gz
tar -zxvf hyperledger-fabric-ca-linux-arm64-1.5.12.tar.gz
chmod +x ./bin/*
打开/etc/profile
文件:
bash
vim /etc/profile
在文件的最后添加如下内容:
bash
export PATH=$PATH:/usr/local/hyfa/fabric-samples/bin
使用source
命令使之生效:
bash
source /etc/profile
6.3. 镜像文件
在有网络环境(Amd64架构Vmware虚拟机,可FanQiang)修改 dockerd 配置文件:
bash
vim /etc/docker/daemon.json
添加如下内容以开启 dockerd 的实验属性:
bash
{
"experimental": true
}
使用以下命令重置服务:
bash
systemctl daemon-reload
systemctl restart docker
之后即可在Amd64架构下拉取Arm64架构的镜像文件。
拉取镜像文件并检查是否符合要求:
bash
docker pull --platform linux/arm64 hyperledger/fabric-peer:2.5.9
docker image inspect hyperledger/fabric-peer:2.5.9 | grep Architecture
docker pull --platform linux/arm64 hyperledger/fabric-orderer:2.5.9
docker image inspect hyperledger/fabric-orderer:2.5.9 | grep Architecture
docker pull --platform linux/arm64 hyperledger/fabric-ccenv:2.5.9
docker image inspect hyperledger/fabric-ccenv:2.5.9 | grep Architecture
docker pull --platform linux/arm64 hyperledger/fabric-baseos:2.5.9
docker image inspect hyperledger/fabric-baseos:2.5.9 | grep Architecture
docker pull --platform linux/arm64 hyperledger/fabric-javaenv:2.5.4
docker image inspect hyperledger/fabric-javaenv:2.5.4 | grep Architecture
docker pull --platform linux/arm64 hyperledger/fabric-ca:1.5.12
docker image inspect hyperledger/fabric-ca:1.5.12 | grep Architecture
docker pull --platform linux/arm64 busybox:1.36
docker image inspect busybox:1.36 | grep Architecture
将镜像保存为压缩文件:
bash
docker save -o fabric-peer-2.5.9.tar hyperledger/fabric-peer:2.5.9
docker save -o fabric-orderer-2.5.9.tar hyperledger/fabric-orderer:2.5.9
docker save -o fabric-ccenv-2.5.9.tar hyperledger/fabric-ccenv:2.5.9
docker save -o fabric-baseos-2.5.9.tar hyperledger/fabric-baseos:2.5.9
docker save -o fabric-javaenv-2.5.4.tar hyperledger/fabric-javaenv:2.5.4
docker save -o fabric-ca-1.5.12.tar hyperledger/fabric-ca:1.5.12
docker save -o busybox-1.36.tar busybox:1.36
将压缩文件下载到本机,再上传到服务器。
加载为镜像:
bash
docker load -i fabric-peer-2.5.9.tar
docker load -i fabric-orderer-2.5.9.tar
docker load -i fabric-ccenv-2.5.9.tar
docker load -i fabric-baseos-2.5.9.tar
docker load -i fabric-javaenv-2.5.4.tar
docker load -i fabric-ca-1.5.12.tar
docker load -i busybox-1.36.tar
出现如下问题时:
有说是因为从虚机中将文件复制出来时导致文件不全,可以使用
md5sum
命令验证。实际使用中多尝试几次即可解决。
将镜像标记为latest:
bash
docker tag hyperledger/fabric-peer:2.5.9 hyperledger/fabric-peer
docker tag hyperledger/fabric-orderer:2.5.9 hyperledger/fabric-orderer
docker tag hyperledger/fabric-ccenv:2.5.9 hyperledger/fabric-ccenv
docker tag hyperledger/fabric-baseos:2.5.9 hyperledger/fabric-baseos
docker tag hyperledger/fabric-javaenv:2.5.4 hyperledger/fabric-javaenv
docker tag hyperledger/fabric-ca:1.5.12 hyperledger/fabric-ca
docker tag busybox:1.36 busybox
七、参考(部分)
1、Cenos7换源