Hyperledger Besu是开源企业级客户端,符合企业联盟(EEA)规范,支持公共***网络、私有网络及联盟网络。本Docker镜像封装了Besu客户端,提供便捷部署方式,确保环境一致性,简化节点配置与维护,适用于开发、测试及生产环境。
通过Docker Hub获取***镜像:
bash# 最新版本 docker pull hyperledger/besu:latest # 指定版本(示例:23.10.0) docker pull hyperledger/besu:23.10.0
bashdocker run -d \ --name besu-mainnet \ -p 30303:30303 \ # P2P端口(节点通信) -p 8545:8545 \ # HTTP RPC端口(外部调用) -v /host/path/to/data:/data \ # 数据持久化目录 hyperledger/besu:latest \ --network=mainnet \ # 连接***主网 --data-path=/data \ # ***数据存储路径 --rpc-http-enabled=true \ # 启用HTTP RPC --rpc-http-host=0.0.0.0 \ # RPC绑定所有网络接口 --rpc-http-cors-origins=* # 允许跨域请求(开发环境)
bashdocker run -d \ --name besu-goerli \ -p 30303:30303 \ -p 8545:8545 \ -v /host/path/to/goerli/data:/data \ hyperledger/besu:latest \ --network=goerli \ # 连接Goerli测试网 --data-path=/data \ --rpc-http-enabled=true \ --rpc-http-host=0.0.0.0 \ --rpc-http-api=ETH,NET,WEB3 # 启用常用RPC API模块
需提前准备创世文件(定义网络初始状态),示例genesis.json(PoA共识):
json{ "config": { "chainId": 1337, "muirGlacierBlock": 0, "constantinopleFixBlock": 0, "petersburgBlock": 0, "ethash": {} }, "nonce": "0x0", "timestamp": "0x5f8d78b0", "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0x1fffffffffffff", "difficulty": "0x1", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "***", "alloc": {}, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000" }
启动私有网络节点命令:
bashdocker run -d \ --name besu-private \ -p 30303:30303 \ -p 8545:8545 \ -v /host/path/to/genesis.json:/config/genesis.json \ # 挂载创世文件 -v /host/path/to/private/data:/data \ # 数据持久化 hyperledger/besu:latest \ --genesis-file=/config/genesis.json \ # 指定创世文件 --network-id=1337 \ # 自定义网络ID --data-path=/data \ --rpc-http-enabled=true \ --rpc-http-host=0.0.0.0 \ --p2p-host=192.168.1.100 # 节点对外IP(供其他节点连接)
创建docker-compose.yml部署2节点私有网络:
yamlversion: '3' services: node1: image: hyperledger/besu:latest container_name: besu-node1 ports: - "8545:8545" # RPC端口 - "30303:30303" # P2P端口 volumes: - ./genesis.json:/config/genesis.json - ./node1/data:/data command: > --genesis-file=/config/genesis.json --network-id=1337 --data-path=/data --rpc-http-enabled=true --rpc-http-host=0.0.0.0 --rpc-http-api=ETH,NET,IBFT --p2p-host=node1 --p2p-port=30303 -***-enabled=true -***-coinbase=*** # 矿工地址 node2: image: hyperledger/besu:latest container_name: besu-node2 ports: - "8546:8545" # 节点2 RPC端口 - "30304:30303" # 节点2 P2P端口 volumes: - ./genesis.json:/config/genesis.json - ./node2/data:/data command: > --genesis-file=/config/genesis.json --network-id=1337 --data-path=/data --rpc-http-enabled=true --rpc-http-host=0.0.0.0 --rpc-http-api=ETH,NET,IBFT --p2p-host=node2 --p2p-port=30303 --p2p-bootnodes=enode://<node1-enode-url> # 替换为node1的enode地址 depends_on: - node1
获取enode地址:启动node1后,执行
docker exec -it besu-node1 besu --data-path=/data public-key export --to=/data/enode.txt,从node1/data/enode.txt获取enode地址并更新node2配置。
| 参数 | 描述 | 示例 |
|---|---|---|
--genesis-file | 指定创世文件路径,定义网络初始状态 | --genesis-file=/config/genesis.json |
--network | 预定义网络(主网/测试网) | --network=goerli |
--network-id | 自定义网络ID(私有网络) | --network-id=1337 |
--data-path | ***数据存储路径 | --data-path=/data |
--rpc-http-enabled | 启用HTTP RPC接口 | --rpc-http-enabled=true |
--rpc-http-api | 启用的RPC API模块 | --rpc-http-api=ETH,NET,WEB3,IBFT |
--p2p-bootnodes | 启动节点列表(加入现有网络) | --p2p-bootnodes=enode://<enode>@192.168.1.100:30303 |
-***-enabled | 启用挖矿(PoW/PoA模式) | -***-enabled=true |
--logging | 日志级别(TRACE/DEBUG/INFO/WARN/ERROR) | --logging=INFO |
-v /host/path:/data挂载本地目录,避免容器重启数据丢失docker logs -f <容器名>实时查看日志;添加--logging=DEBUG调整日志详细度节点启动后,通过RPC接口验证状态:
bashcurl -X POST http://localhost:8545 \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
返回当前区块高度,确认节点正常同步。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429