Arm64架构CentOS7服务器搭建Fabric环境

本文记录在Arm64架构的CentOS7服务器上搭建Fabric环境的流程,该主机可以访问公网但是不方便访问Github和Docker Hub。

文章目录


一、软件包管理器

错误:
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.gzhyperledger-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换源

2、无网络环境,如何部署Docker镜像

3、Linux安装docker,报错Error downloading packages

4、如何使用 docker pull 拉取特定架构的容器镜像

相关推荐
Lee川12 小时前
深度拆解:基于面向对象思维的“就地编辑”组件全模块解析
javascript·架构
勤劳打代码12 小时前
Flutter 架构日记 — 状态管理
flutter·架构·前端框架
子兮曰18 小时前
后端字段又改了?我撸了一个 BFF 数据适配器,从此再也不怕接口“屎山”!
前端·javascript·架构
卓卓不是桌桌20 小时前
如何优雅地处理 iframe 跨域通信?这是我的开源方案
javascript·架构
Qlly20 小时前
DDD 架构为什么适合 MCP Server 开发?
人工智能·后端·架构
用户881586910912 天前
AI Agent 协作系统架构设计与实践
架构
鹏北海2 天前
Qiankun 微前端实战踩坑历程
前端·架构
货拉拉技术2 天前
货拉拉海豚平台-大模型推理加速工程化实践
人工智能·后端·架构
RoyLin2 天前
libkrun 深度解析:架构设计、模块实现与 Windows WHPX 后端
架构
CoovallyAIHub3 天前
实时视觉AI智能体框架来了!Vision Agents 狂揽7K Star,延迟低至30ms,YOLO+Gemini实时联动!
算法·架构·github