环境准备:安装Docker、Docker Compose、Go语言环境
说实话,搭建Hyperledger Fabric网络,最让人头疼的往往不是链码怎么写,而是环境装不对。我见过太多新手卡在第一步——Docker没装好,Go版本不对,折腾半天连网络都起不来。
这一章,咱们就把这些基础工具装好。你跟着我的步骤走,基本不会出问题。
本章核心目标:在你的机器上装好Docker、Docker Compose和Go语言环境,确保版本兼容,能跑通Hello World级别的验证。
2.1 整体环境概览
先看看我们要装什么,以及它们之间的关系。我画了张图,帮你理清思路。
说白了,Docker是运行环境,Compose是编排工具,Go是开发语言。三者缺一不可。
2.2 安装Docker
Docker是Fabric网络的基石。所有Peer节点、Orderer节点、CA节点,都跑在容器里。我刚开始学Fabric时,直接在Windows上装Docker Desktop,结果网络模式搞了我两天——后来才发现WSL2的配置没对。
2.2.1 检查系统要求
先确认你的系统支持。我个人建议用Ubuntu 20.04或22.04,踩坑最少。
| 操作系统 | 推荐版本 | 注意事项 |
|---|---|---|
| Ubuntu | 20.04 / 22.04 LTS | 最稳定,社区支持最好 |
| macOS | Monterey 12+ | 需安装Docker Desktop |
| Windows | Win 10/11 Pro | 必须启用WSL2,Hyper-V |
2.2.2 安装步骤(Ubuntu为例)
我习惯用官方仓库安装,干净利落。别用apt自带的旧版本,坑太多。
# 1. 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2. 更新包索引
sudo apt-get update
# 3. 安装依赖
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 4. 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 5. 设置稳定版仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 6. 安装Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 7. 验证安装
sudo docker run hello-world
小技巧:安装完成后,记得把当前用户加入docker组,避免每次都用sudo。
sudo usermod -aG docker $USER
newgrp docker # 或者退出重新登录
2.2.3 验证Docker版本
装完跑一下版本号,确保是20.10以上。Fabric 2.x对Docker版本有要求,太旧了会报错。
docker version
# 输出示例(重点关注Server端版本)
Client: Docker Engine - Community
Version: 24.0.6
Server: Docker Engine - Community
Version: 24.0.6
注意:如果Server版本没显示,说明Docker守护进程没启动。执行 sudo systemctl start docker 启动它。
2.3 安装Docker Compose
Docker Compose用来定义和运行多容器应用。Fabric网络里,Orderer、Peer、CA、CLI这些容器,全得靠Compose编排。我记得有一次生产环境出问题,就是因为Compose版本太低,不支持某些配置项。
2.3.1 安装方式
现在Docker Compose已经集成到Docker CLI里了,但为了兼容性,我建议单独装v2版本。
# 下载最新稳定版
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证版本
docker-compose --version
# 输出:Docker Compose version v2.23.0
2.3.2 验证Compose功能
写个简单的docker-compose.yml,跑一下看看。
# 创建测试目录
mkdir ~/compose-test && cd ~/compose-test
# 创建docker-compose.yml
cat <<EOF > docker-compose.yml
version: '3.8'
services:
hello:
image: hello-world
EOF
# 启动
docker-compose up
# 看到 "Hello from Docker!" 就对了
避坑指南:我曾经在CentOS上装Compose,忘了给执行权限,结果一直报"Permission denied"。你装完后记得 chmod +x,这步容易忘。
2.4 安装Go语言环境
Go语言是Fabric链码的官方语言。虽然Fabric也支持Java和Node.js,但Go的性能和生态最好。我个人强烈建议用Go写链码——你想想看,Fabric核心代码就是Go写的,兼容性肯定最好。
2.4.1 下载并安装Go
别用apt装Go,版本太旧。去官网下载二进制包,手动安装。
# 1. 下载Go 1.21.5(建议用这个版本,Fabric 2.5完美兼容)
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
# 2. 解压到/usr/local
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
# 3. 配置环境变量(写入~/.bashrc或~/.zshrc)
cat <<EOF >> ~/.bashrc
export GOROOT=/usr/local/go
export GOPATH=\$HOME/go
export PATH=\$GOROOT/bin:\$GOPATH/bin:\$PATH
EOF
# 4. 使环境变量生效
source ~/.bashrc
# 5. 验证安装
go version
# 输出:go version go1.21.5 linux/amd64
2.4.2 配置Go模块代理
国内访问Go官方模块仓库比较慢。我建议配置七牛云的代理,速度快很多。
# 设置Go模块代理
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
# 验证配置
go env | grep GOPROXY
# 输出:GOPROXY="https://goproxy.cn,direct"
2.4.3 验证Go开发环境
写个简单的Hello World,确保编译没问题。
# 创建项目目录
mkdir -p ~/go-hello && cd ~/go-hello
# 初始化模块
go mod init hello
# 创建main.go
cat <<EOF > main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, Hyperledger Fabric!")
}
EOF
# 编译运行
go run main.go
# 输出:Hello, Hyperledger Fabric!
版本兼容性速查表:Fabric 2.x对Go版本有明确要求,别装错了。
| Fabric版本 | 推荐Go版本 | 最低Go版本 |
|---|---|---|
| Fabric 2.2 LTS | 1.16.x - 1.18.x | 1.14 |
| Fabric 2.5 | 1.20.x - 1.21.x | 1.18 |
| Fabric 3.0(预览版) | 1.21.x | 1.20 |
2.5 环境验证清单
装完别急着走。我列个清单,你逐项检查一遍,确保万无一失。
- Docker运行正常:
docker ps不报错,能拉取镜像 - Docker Compose可用:
docker-compose version显示v2.x - Go编译通过:
go run main.go输出正确 - Go模块代理生效:
go env GOPROXY显示代理地址 - 用户加入docker组:不用sudo也能执行docker命令
最后提醒:如果你用的是Windows,务必确认WSL2已启用,并且Docker Desktop设置为使用WSL2后端。否则Fabric网络启动时会报网络驱动错误——我当初在这上面浪费了整整一个下午。