基于Docker的以太坊节点部署教程(保姆级)

本教程将手把手指导你使用Docker部署以太坊全节点,无需编译源码或处理依赖问题。整个过程约需30分钟(区块链同步时间除外)。


步骤1:准备工作
  1. 安装Docker
    # Ubuntu示例
    sudo apt update && sudo apt install docker.io
    sudo systemctl enable --now docker
    

  2. 创建数据目录(防止容器重启丢失数据)
    mkdir -p ~/ethereum/data
    


步骤2:拉取以太坊镜像

使用官方Geth客户端镜像:

docker pull ethereum/client-go:stable

验证:docker images应显示ethereum/client-go


步骤3:启动节点容器
docker run -d --name eth-node \
  -p 8545:8545 \          # JSON-RPC端口
  -p 30303:30303 \        # 节点通信端口
  -v ~/ethereum/data:/root \  # 挂载数据卷
  ethereum/client-go \
  --syncmode full \       # 全节点模式
  --http --http.addr 0.0.0.0 \  # 启用HTTP接口
  --http.api eth,net,web3

参数说明

  • --syncmode full:完整同步所有区块数据(约1TB存储)
  • 若需测试网:追加--goerli参数
  • 轻节点模式:替换为--syncmode light

步骤4:监控节点状态
  1. 查看实时日志:
    docker logs -f eth-node
    

  2. 检查同步进度(出现Imported new chain segment即正常):
    INFO [06-20|14:32] Imported new chain segment blocks=1 elapsed=1.234s
    


步骤5:与节点交互

通过JSON-RPC查询(需安装curl):

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://localhost:8545

正常响应:

{"jsonrpc":"2.0","id":1,"result":"0xc0f4f3"}


常见问题解决
问题现象 解决方案
端口冲突 修改-p参数,如-p 8546:8545
磁盘空间不足 添加--cache=1024减少内存占用
同步缓慢 添加--maxpeers 100增加连接数
RPC调用失败 检查防火墙是否开放8545端口

节点维护命令
# 停止节点
docker stop eth-node

# 重启节点(保留数据)
docker start eth-node

# 升级客户端
docker pull ethereum/client-go:latest
docker stop eth-node && docker rm eth-node
# 重新执行步骤3的run命令

注意:首次同步主网数据需数天时间,建议保持设备联网运行。完成部署后,你已拥有一个完全去中心化的以太坊全节点!

更多推荐