Hyperledger Besu是开源企业级客户端,符合企业联盟(EEA)规范,支持公共***网络、私有网络及联盟网络。本Docker镜像封装了Besu客户端,提供便捷部署方式,确保环境一致性,简化节点配置与维护,适用于开发、测试及生产环境。
通过Docker Hub获取官方镜像:
bash# 最新版本 docker pull hyperledger/besu:latest # 指定版本(示例:23.10.0) docker pull hyperledger/besu:23.10.0
1. 运行主网节点
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=* # 允许跨域请求(开发环境)
2. 运行测试网节点(Goerli)
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模块
3. 运行私有网络节点
需提前准备创世文件(定义网络初始状态),示例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": "0x0000000000000000000000000000000000000000", "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 --miner-enabled=true --miner-coinbase=0x71562b71999873DB5b286dF957af199Ec94617F7 # 矿工地址 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 |
--miner-enabled | 启用挖矿(PoW/PoA模式) | --miner-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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务