Docker 一步部署欧易链(OKExChain)主网节点完全指南

·

想用最省事的方式在本地跑起一条 欧易链主网节点?用 Docker 部署不香吗!本文把官方文档浓缩成一行行可复制的命令,CPU、内存、端口、镜像版本全部列好,一条龙到位,让你在 5 分钟内把节点启动、区块同步、日志监控全套跑通。

核心关键词:欧易链主网、Docker 部署、OKExChain 节点、区块同步、CentOS 服务器、区块链日志、RPC 接口、P2P 端口。

一、前置硬件与环境

1.1 最低硬件配置

1.2 软件清单

项目推荐/最低版本备注
Docker Engine≥ 19.03.11新版本向下兼容,不强求绝对一致
Docker Compose可选,简化管理不强制
系统时间同步NTP/Chrony区块验证对时间敏感
如果你已经用 Ansible、Terraform 做自动化,只需把本指南的 Docker 命令嵌进脚本即可。

👉 跟着步骤 3 分钟启动容器,先人一步加入主网流畅跑块!

二、获取 OKExChain 主网镜像

节点镜像托管在 Docker Hub,官方已替我们打好包。确保服务器能连外网,执行:

docker pull okexchain/fullnode-mainnet:v0.19.5

拉取后查看镜像大小:

docker images | grep okexchain

如出现 v0.19.5 的条目且大小约 2 GB+,表示拉取成功。

三、一站式启动容器

3.1 创建持久化目录

节点运行会产生区块链数据、日志与配置文件,请固定到挂载点,方便升级或迁移。

mkdir -p /opt/docker/okexchain

目录说明:

3.2 一键启动脚本

docker run -itd --restart=unless-stopped \
  -v /etc/localtime:/etc/localtime \
  -v /etc/timezone:/etc/timezone \
  --name okexchain \
  -v /opt/docker/okexchain:/root/.exchaind/data/ \
  -p 8545:8545 \
  -p 26656:26656 \
  okexchain/fullnode-mainnet:v0.19.5

参数拆解:

3.3 实时日志追踪

docker logs --tail 100 -f okexchain

看到接连刷出 “Committed state height=…” 及无红色错误即表示节点正常启动并开始同步。

四、确认节点在线 & 区块同步

4.1 容器存活状态

docker ps

预期输出:

CONTAINER ID   IMAGE                                STATUS          PORTS
97527d0…       okexchain/fullnode-mainnet:v0.19.5   Up 5 minutes    0.0.0.0:8545->8545/tcp  ...

如状态为 Up,容器 OK。

4.2 日志诊断关键字段

日志中若出现以下片段,可安心:

I[...] starting ABCI with Tendermint module=main
I[...] Committed state module=state height=...
2021-09-13 18:12:22 (266 MB/s) - '/root/.exchaind/config/genesis.json' saved

如果循环输出多行 “Validator set is nil”,说明创世文件还没拿到或磁盘路径权限异常,回退到 3.2 重新挂盘即可。

👉 一键查看区块状态,验证节点是否与全网实时对齐!

五、同步完成检查清单

5.1 RPC 方式查看是否仍在同步

curl -s -H "Content-Type:application/json" -X POST \
  --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' \
  http://127.0.0.1:8545

返回:

{"jsonrpc":"2.0","id":1,"result":false}

只要 result: false 就说明同步完成;若返回区块号则表示仍在追块。

5.2 实时区块高度对比

curl -s -H "Content-Type:application/json" -X POST \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
  http://127.0.0.1:8545

将结果(十六进制)转为十进制后,与 官方浏览器Latest 一栏进行对比,两者一致即完全同步。

六、FAQ:部署常见疑难杂症

Q1:CentOS 端口没开?
A:CentOS 默认自带 firewalld,放行即可:

firewall-cmd --permanent --add-port 8545/tcp
firewall-cmd --permanent --add-port 26656/tcp
firewall-cmd --reload

Q2:Docker 挂掉后为什么会提示 “no space left on device”?
A:检查

df -h /opt/docker

日志驱逐不及时导致碎片,加定时任务清理:docker system prune -f

Q3:我需要快速重放数据,有没有快照下载?
A:官方每月发布快照,以带校验的 Tar 形式提供,支持断点续传。下载后解压到 /opt/docker/okexchain/data 并重启用容器即可跳过 80% 同步时间。

Q4:镜像想升级到 v0.19.6+ 怎么做?
A:拉新镜像 → 停止并删除旧容器 → 把新容器数据卷挂载点一致,再启动,区块链数据无损迁移。

Q5:节点半年没关,磁盘增速太快如何预估?
A:主网平均每天新增 2.5 GB 左右,建议按 已用空间 + (2.5 GB × 天数) 提前扩容。

Q6:JSON-RPC 查询速度变慢?
A:确认 --cache 4096_MB 是否启用;若配置项默认太小,可在容器环境变量中追加 EXCHD_FLAGS=--cache=4096 后重启即可。

七、进阶运维彩蛋

  1. Prometheus 监控:镜像默认暴露 6060 端口 /metrics,用 Grafana 导入官方 Dashboard,即可查看交易数、区块时间、内存曲线。
  2. TLS 网关:使用 Nginx 反向代理 8545,给外网加上 HTTPS,并开启限流,防止接口被刷爆。
  3. 多节点容器编排:用 docker-compose.yml 开多张网卡,动手改 external.toml 即可实现单服务器跑多个节点 & 公网对等。
欧易链主网节点,本质是 Tendermint + EVM 双栈,Docker 让部署门槛降到个位数命令;保持服务在线、硬盘别塞满,你就能持续提供更快的链上查询体验。祝你运行愉快!