要在 Docker 容器中安装和配置 SoftRoCE (Software RDMA over Converged Ethernet),可以按照以下步骤进行:

第一步:安装 Docker

首先,确保系统上已安装 Docker。可以按照官方 Docker 安装指南 进行安装。

第二步:创建 Dockerfile

创建一个 Dockerfile 来设置 SoftRoCE 所需的环境。该 Dockerfile 将安装必要的依赖项并配置环境。

# 使用官方的 Ubuntu 作为基础镜像
FROM ubuntu:20.04

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 安装必要的软件包
RUN apt-get update && apt-get install -y \
    iproute2 \
    net-tools \
    rdma-core \
    infiniband-diags \
    ibutils \
    perftest \
    iputils-ping \
    wget \
    build-essential \
    git \
    cmake \
    gcc \
    g++ \
    libnuma-dev \
    libibverbs-dev \
    librdmacm-dev \
    rdma-core-dev \
    && rm -rf /var/lib/apt/lists/*

# 安装 SoftRoCE
RUN apt-get update && apt-get install -y softroce

# 暴露必要的端口(如果有)
EXPOSE 47500-47999

# 设置入口点
CMD ["bash"]

第三步:构建 Docker 镜像

导航到包含 Dockerfile 的目录,并构建 Docker 镜像:

docker build -t softroce-docker .

第四步:运行 Docker 容器

从构建的镜像启动一个 Docker 容器:

docker run -it --privileged --name softroce-container softroce-docker

--privileged 标志用于给予容器扩展的权限,这通常是配置 RDMA 等网络相关操作所必需的。

第五步:在容器中配置 SoftRoCE

进入运行中的容器后,需要设置并启动 SoftRoCE:

  1. 加载 rdma_rxe 模块:
modprobe rdma_rxe
  1. 将以太网接口添加到 SoftRoCE。用适当的接口名称替换 eth0
rxe_cfg add eth0
  1. 验证 SoftRoCE 配置:
rxe_cfg status

这应该显示 SoftRoCE 配置和已添加接口的状态。

第六步:测试 SoftRoCE

可以使用容器中的各种 RDMA 工具测试 SoftRoCE。例如,可以使用 ibv_devices 列出 RDMA 设备:

ibv_devices

并使用 ibv_rc_pingpong 在两个 RDMA 节点之间执行简单的 ping-pong 测试(需要另一个容器或机器):

ibv_rc_pingpong -d rxe0 -g 0 -i 1 -s 1024

结论

通过以上步骤,应该可以在 Docker 容器中安装和配置 SoftRoCE。此设置允许在受控环境中测试和开发 RDMA 应用。如果有特定需求或需要进一步的自定义,可以相应地修改 Dockerfile 和容器配置。