想用最省事的方式在本地跑起一条 欧易链主网节点?用 Docker 部署不香吗!本文把官方文档浓缩成一行行可复制的命令,CPU、内存、端口、镜像版本全部列好,一条龙到位,让你在 5 分钟内把节点启动、区块同步、日志监控全套跑通。
核心关键词:欧易链主网、Docker 部署、OKExChain 节点、区块同步、CentOS 服务器、区块链日志、RPC 接口、P2P 端口。
一、前置硬件与环境
1.1 最低硬件配置
- 操作系统:CentOS 7 及以上、Ubuntu 18.04 及以上皆可,64 bit。
- CPU:4 核心以上。
- 内存:≥ 8 GB。
- 硬盘:SSD ≥ 500 GB(区块高度持续增长,建议预留空间)。
- 网络:独立带宽 5M 以上,出口流量无限制最佳。
1.2 软件清单
项目 | 推荐/最低版本 | 备注 |
---|---|---|
Docker Engine | ≥ 19.03.11 | 新版本向下兼容,不强求绝对一致 |
Docker Compose | 可选,简化管理 | 不强制 |
系统时间同步 | NTP/Chrony | 区块验证对时间敏感 |
如果你已经用 Ansible、Terraform 做自动化,只需把本指南的 Docker 命令嵌进脚本即可。
二、获取 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
目录说明:
/opt/docker/okexchain
:映射容器中的~/.exchaind/data
,所有区块数据与配置都放这里。
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
参数拆解:
restart=unless-stopped
:挂了自动拉起。-p 8545:8545
:对内开放 JSON-RPC 端口,供钱包、dApp 交互。-p 26656:26656
:P2P 端口,用于节点间广播交易、同步区块。
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
后重启即可。
七、进阶运维彩蛋
- Prometheus 监控:镜像默认暴露 6060 端口
/metrics
,用 Grafana 导入官方 Dashboard,即可查看交易数、区块时间、内存曲线。 - TLS 网关:使用 Nginx 反向代理 8545,给外网加上 HTTPS,并开启限流,防止接口被刷爆。
- 多节点容器编排:用
docker-compose.yml
开多张网卡,动手改external.toml
即可实现单服务器跑多个节点 & 公网对等。
欧易链主网节点,本质是 Tendermint + EVM 双栈,Docker 让部署门槛降到个位数命令;保持服务在线、硬盘别塞满,你就能持续提供更快的链上查询体验。祝你运行愉快!