菜单

Docker 基础设施

相关源文件

目的与范围

本文档全面概述了 Base Node 系统中使用的 Docker 基础设施。它涵盖了容器化架构、Docker Compose 配置、Docker 镜像结构、网络和卷管理。有关特定 Docker Compose 配置的详细信息,请参阅Docker Compose 配置。有关 Docker 镜像的信息,请参阅Docker 镜像。有关卷管理方面的具体信息,请参阅卷管理

Docker 架构概述

Base Node 使用 Docker 容器来打包和运行 Base 节点所需的组件。该系统采用通过 Docker Compose 编排的多容器架构,也可选择使用 supervisord 在单个容器中运行,用于专用部署。

来源:docker-compose.yml1-32 README.md55-85

容器结构

Base Node 系统包含两个主要容器

  1. 执行容器:运行支持的执行客户端(Geth、Reth 或 Nethermind)之一,负责处理 Layer 2 交易
  2. Op-Node 容器:运行 Optimism 节点,该节点与以太坊 L1 通信并将数据馈送给执行客户端

这些容器是从同一个 Docker 镜像构建的,但具有不同的入口点脚本和配置。

来源:docker-compose.yml1-32 README.md55-85

Docker Compose 配置

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

Docker 镜像结构

每个支持的执行客户端(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 基础设施使用环境文件为不同网络配置容器。该系统支持两个网络

端口映射

容器端口目的
执行8545JSON-RPC API
执行8546WebSocket API
执行7301Metrics 端点
执行30303P2P 通信 (TCP/UDP)
Op-Node7545JSON-RPC API
Op-Node9222P2P 通信 (TCP/UDP)
Op-Node7300Metrics 端点
Op-Node6060性能剖析 (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 而不是执行服务名称。

来源:README.md96-106

环境配置

Base Node Docker 基础设施使用环境文件为不同网络配置容器。该系统支持两个网络

  1. 主网:使用 .env.mainnet 配置
  2. Sepolia 测试网:使用 .env.sepolia 配置

用户通过在启动容器之前设置 NETWORK_ENV 环境变量来指定要使用的网络。

这些环境文件包含了执行客户端和 op-node 的配置,包括:

  • L1 以太坊节点 RPC URL
  • 特定网络的参数
  • P2P 设置
  • 日志配置

来源:docker-compose.yml15-16 docker-compose.yml30-31 README.md58-64