环境准备:安装Docker、Docker Compose、Go语言环境

说实话,搭建Hyperledger Fabric网络,最让人头疼的往往不是链码怎么写,而是环境装不对。我见过太多新手卡在第一步——Docker没装好,Go版本不对,折腾半天连网络都起不来。

这一章,咱们就把这些基础工具装好。你跟着我的步骤走,基本不会出问题。

本章核心目标:在你的机器上装好Docker、Docker Compose和Go语言环境,确保版本兼容,能跑通Hello World级别的验证。

2.1 整体环境概览

先看看我们要装什么,以及它们之间的关系。我画了张图,帮你理清思路。

智能家居Fabric环境准备 — 核心组件关系图 操作系统(Ubuntu 20.04 / macOS / Windows WSL2) Docker Engine Docker Compose Go语言环境(1.20+) Fabric二进制 & 镜像 说明:Fabric网络的所有节点(Peer、Orderer、CA)都运行在Docker容器中 Go语言用于编写链码(智能合约),Docker Compose负责编排容器启动顺序

说白了,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 环境验证清单

装完别急着走。我列个清单,你逐项检查一遍,确保万无一失。

  1. Docker运行正常:docker ps 不报错,能拉取镜像
  2. Docker Compose可用:docker-compose version 显示v2.x
  3. Go编译通过:go run main.go 输出正确
  4. Go模块代理生效:go env GOPROXY 显示代理地址
  5. 用户加入docker组:不用sudo也能执行docker命令

最后提醒:如果你用的是Windows,务必确认WSL2已启用,并且Docker Desktop设置为使用WSL2后端。否则Fabric网络启动时会报网络驱动错误——我当初在这上面浪费了整整一个下午。