首页 > 其他分享 >[DPDK] Docker容器内安装DPDK

[DPDK] Docker容器内安装DPDK

时间:2024-08-31 10:38:45浏览次数:12  
标签:容器 cmake tar 22.11 && Docker DPDK dpdk

Docker安装DPDK

参考:容器安装DPDK

确认版本兼容性

我使用的是Mellanox-5网卡。为了确认支持的DPDK版本,请先确认自己的OFED和frimware版本。

查看firmware版本:

$ ibstat
CA 'mlx5_0'
        CA type: MT4119
        Firmware version: 16.35.3006

查看OFED版本:

$ ofed_info  -s
MLNX_OFED_LINUX-5.8-3.0.7.0:

注意:在安装MLNX_OFED时,需要加入dpdk的相关选项。

然后去官网查找DPDK兼容的OFED和firmware版本。6. DPDK Release 22.11 — Data Plane Development Kit 24.07.0 documentation。比如22.11支持如下版本:

MLNX_OFED 5.8-1.0.1.1 and above
Firmware version: 16.35.1012 and above

看来没问题,于是我们选择22.11.6(LTS)下载安装。

编写Dockerfile

新建一个目录,里面包含如下文件:

.
├── cmake-3.30.1-linux-x86_64.tar.gz
├── Dockerfile
├── dpdk-22.11.6.tar.xz
└── sources.list
  • 官网下载的cmake可执行文件,这是因为apt安装的cmake版本比较低。
  • 官网下载的dpdk源码。
  • source.list,用于更换apt源,内容如下。
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
  • Dockerfile内容如下:
FROM dockerproxy.cn/library/ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
COPY cmake-3.30.1-linux-x86_64.tar.gz /root
COPY dpdk-22.11.6.tar.xz /root
COPY sources.list /root
RUN cd /root \
    && cat sources.list > /etc/apt/sources.list \
    && apt update \
    && apt install build-essential python3 python3-pip libnuma-dev net-tools pciutils inetutils-ping iproute2 linux-headers-5.15.0-69-generic pkg-config libibverbs-dev librdmacm-dev -y \
    && pip3 install meson ninja pyelftools \
    && tar xvf cmake-3.30.1-linux-x86_64.tar.gz \
    && ln -s /root/cmake-3.30.1-linux-x86_64/bin/cmake /usr/bin/cmake \
    && tar -xvf dpdk-22.11.6.tar.xz \
    && cd dpdk-stable-22.11.6/ \
    && meson build \
    && cd build \
    && ninja \
    && meson install \
    && ldconfig

CMD ["/bin/bash"]

其中,dockerproxy.cn是国内的镜像源。ENV DEBIAN_FRONTEND=noninteractive是因为pkt-config在安装的时候默认要配置时区,这行代码可以把该步骤省略掉。

编译Dockerfile。

$ docker build -t dpdk:22.11.6 .

运行容器。运行时要挂载一些目录(其中/home/zcq是我自己的目录,根据需求替换掉即可)。

$ docker run -itd --privileged --net=host -v /sys/bus/pci/drivers:/sys/bus/pci/drivers -v /sys/kernel/mm/hugepages:/sys/kernel/mm/hugepages -v /sys/devices/system/node:/sys/devices/system/node -v /dev:/dev -v /var/run:/var/run -v /lib/modules:/lib/modules -v /home/zcq:/home/zcq -w /home/zcq --name dpdk-test dpdk:22.11.6 bash
$ docker exec -it dpdk-test bash

进入容器后,可用如下命令确认dpdk版本。

$ pkg-config --modversion libdpdk
22.11.6

附:

  • 我这里的--net=host让容器使用宿主机网络,因此不需要虚拟化。
  • 对于Mellanox ConnectX-5网卡,可以直接使用默认的mlx5_core驱动,而不用dpdk-devbind.py更换为vfio或者uio。
  • 上面还挂载了大页内存,所以大页内存也直接在宿主机里配置好就可以了,容器内不需要再次配置。

标签:容器,cmake,tar,22.11,&&,Docker,DPDK,dpdk
From: https://www.cnblogs.com/CQzhangyu/p/18389939

相关文章

  • 使用docker安装mysql
    安装Docker1、Docker教程地址:https://www.runoob.com/docker/centos-docker.install.html2、安装docker命令:yuminstalldocker-io3、启动docker命令:servicedockerstart4、查看docker是否启动成功命令:ps-ef|grepdocker使用docker安装mysql1、查询mysql命令:docke......
  • [Raspberry Pi]如何利用docker執行motioneye,並利用Line Notify取得即時通知和照片?
    [Motioneye]Howtosetupmotiondetectionandsendmessage/imageforLineNotify無意間,翻了一本關於樹莓派的書籍,除了樹莓派的簡介和應用外,也包含初階和高階的Linux運作邏輯,書籍結構相當完整,也因此需要花時間細細體會其內容。其在樹莓派的應用內容,提及一款開源影像監視......
  • Python基础 3 - 函数及数据容器
    文章目录一、函数概念1、函数介绍2、函数的定义3、函数的调用4、函数说明文档5、函数嵌套调用6、变量作用域1)局部变量2)全局变量3)声明全局变量二、数据容器入门1、列表(list)1)列表的定义2)调用列表元素3)列表的方法4)列表的特点5)列表的遍历(迭代)6)列表的乘......
  • list容器---深入探索STL中的双向链表
    目录一、引言二、list容器原理三、list容器的常用操作  1.创建list容器  2.添加元素  3.删除元素  4.访问元素  5.遍历list容器四、list容器的优缺点五、实际应用场景六、总结        本文将详细介绍C++STL中的list容器,包括其原理、常用......
  • docker安装和使用
    docker安装:sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-commonsudocurl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpgecho"deb[arch=......
  • docker镜像所使用到的COW写时复制技术是什么
    copy on write 简单来说,所有的读操作都是指向一份内存地址,共享这些数据,节省内存空间。如果有进程要对数据进行写操作,系统会检测到这个行为,将数据复制一份出来,给这个进程进行写操作。其他进程继续共享原来的没有修改的。写操作的进程指针指向新的副本。COW的基本原理......
  • docker-compose安装
    docker-compose离线安装版本对应docker-compose1.x对应dockerengine1.12及以上docker-compose2.x对应dockerengine20.10.0及以上下载2.25版本的只有2.20版本以上支持include特性sudocurl-L"https://github.com/docker/compose/releases/download/v2.25.0/docker......
  • 容器 数据库 遛个弯
    情境参加了培训的第三次课,本周内容的覆盖面有点广,主要涉及docker概览,dvwa容器部署实验,数据库CRUD,以及某b**p软件的安装.这里是第3课的作业题,及我的解答.1、在docker中分别以后台方式和交互方式启动centos,对比启动后的容器状态,实现退出容器也能保持其运行状态我的......
  • 两句话讲清楚离线安装docker
    两句话讲清楚离线安装docker目录两句话讲清楚离线安装docker写在前面解决方案写在前面背景:银河麒麟、离线环境,装吧,一装一个不吱声。参考链接:https://blog.csdn.net/zhaogangyyxf/article/details/141328640准备:docker安装包:文件类型是一个压缩包。一般是要去docker......
  • vmware Docker 设置代理
    vmwareDocker设置代理到宿主机的代理软件添加配置获取宿主机的ip在windows上执行ipconfig看到vim/usr/lib/systemd/system/docker.service在[Service]处添加以下两行信息,将流量代理给宿主机的7890端口出外网,ip换成你自己的,配置成虚拟机的网关地址Environment="HTT......