本文档全面概述了 Base Node 系统中使用的 Docker 基础设施。它涵盖了容器化架构、Docker Compose 配置、Docker 镜像结构、网络和卷管理。有关特定 Docker Compose 配置的详细信息,请参阅Docker Compose 配置。有关 Docker 镜像的信息,请参阅Docker 镜像。有关卷管理方面的具体信息,请参阅卷管理。
Base Node 使用 Docker 容器来打包和运行 Base 节点所需的组件。该系统采用通过 Docker Compose 编排的多容器架构,也可选择使用 supervisord 在单个容器中运行,用于专用部署。
来源:docker-compose.yml1-32 README.md55-85
Base Node 系统包含两个主要容器
这些容器是从同一个 Docker 镜像构建的,但具有不同的入口点脚本和配置。
来源:docker-compose.yml1-32 README.md55-85
Base Node 系统使用 Docker Compose 来编排容器。配置在 docker-compose.yml 文件中定义。
Docker Compose 文件定义了两个主要服务
| 服务 | 目的 | 公开的端口 |
|---|---|---|
execution | 运行执行客户端(Geth、Reth 或 Nethermind) | 8545 (RPC), 8546 (WebSocket), 7301 (Metrics), 30303 (P2P) |
node | 运行 op-node 进程 | 7545 (RPC), 9222 (P2P), 7300 (Metrics), 6060 (pprof) |
这两个服务都从同一个 Docker 镜像构建,但具有不同的入口点命令和端口映射。
Docker Compose 设置使用环境文件(.env.mainnet 或 .env.sepolia)来配置不同网络的各个服务。用户通过在启动容器之前设置 NETWORK_ENV 环境变量来指定要使用的网络。
来源:docker-compose.yml1-32 README.md58-64
每个支持的执行客户端(Geth、Reth、Nethermind)在其各自的客户端目录下都有自己的 Dockerfile。Docker 镜像根据指定的 CLIENT 环境变量从指定的 Dockerfile 构建。
Docker 镜像包含执行客户端和 op-node,并根据正在运行的容器,具有启动相应进程的入口点脚本。
来源:docker-compose.yml3-6 docker-compose.yml18-21
数据持久化通过卷挂载处理。主机数据目录被挂载到执行容器的 /data 路径。默认情况下,此目录为 ${PROJECT_ROOT}/geth-data,但可以通过修改 .env 文件中的 GETH_HOST_DATA_DIR 变量来覆盖。
此卷挂载确保即使在容器停止或重启时,链数据也能持久化。为了加快同步速度,用户可以将快照提取到数据目录中。
来源:docker-compose.yml14 README.md89-94 .dockerignore1-3
Base Node Docker 基础设施使用环境文件为不同网络配置容器。该系统支持两个网络
| 容器 | 端口 | 目的 |
|---|---|---|
| 执行 | 8545 | JSON-RPC API |
| 执行 | 8546 | WebSocket API |
| 执行 | 7301 | Metrics 端点 |
| 执行 | 30303 | P2P 通信 (TCP/UDP) |
| Op-Node | 7545 | JSON-RPC API |
| Op-Node | 9222 | P2P 通信 (TCP/UDP) |
| Op-Node | 7300 | Metrics 端点 |
| Op-Node | 6060 | 性能剖析 (pprof) |
op-node 容器通过 Engine API 与执行容器通信。这通过 Docker Compose 的内部 DNS 来实现,允许容器通过服务名称互相引用。
来源:docker-compose.yml6-11 docker-compose.yml23-28
虽然默认配置使用 Docker Compose 运行两个独立的容器,但 Base Node 也可以使用 supervisord 在单个容器中运行。这对于 Kubernetes 等偏好单容器部署的环境非常有用。
在单容器模式下运行时,需要调整一些配置,特别是 OP_NODE_L2_ENGINE_RPC 环境变量,它需要指向 localhost 而不是执行服务名称。
Base Node Docker 基础设施使用环境文件为不同网络配置容器。该系统支持两个网络
.env.mainnet 配置.env.sepolia 配置用户通过在启动容器之前设置 NETWORK_ENV 环境变量来指定要使用的网络。
这些环境文件包含了执行客户端和 op-node 的配置,包括:
来源:docker-compose.yml15-16 docker-compose.yml30-31 README.md58-64
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(c673c8)