3. DPU上运行Linux容器

任务目标

在BlueField-3 DPU的ARM子系统(即BlueField主机)上运行一个Docker容器,验证容器能够正常启动、网络连通,并执行基本命令。

环境与依赖

  • BlueField-3 DPU已安装并启动,运行DOCA 2.x或更高版本固件/驱动。
  • DPU的ARM子系统(BlueField主机)可通过ssh登录(默认用户root或ubuntu)。
  • ARM子系统已安装Docker Engine(若未安装,参考下方安装命令)。

实现步骤

1. 登录DPU的ARM子系统

通过外部主机使用SSH登录DPU的ARM子系统。假设DPU的带外管理IP为192.168.100.10:

ssh root@192.168.100.10

2. 确认Docker已安装

docker --version

若未安装,执行以下命令安装Docker(适用于Ubuntu/Debian ARM64):

apt-get update
apt-get install -y docker.io
systemctl enable --now docker

3. 运行测试容器

拉取一个轻量ARM64镜像并运行容器,验证基本功能与网络:

docker run -d --name test-alpine --network bridge alpine:3.19 sleep 3600

该命令在后台启动一个基于alpine:3.19的容器,保持运行1小时,使用默认bridge网络。

4. 验证容器状态与网络

docker ps --filter name=test-alpine
docker exec test-alpine ip addr show eth0
docker exec test-alpine ping -c 3 8.8.8.8

5. 清理测试容器

docker rm -f test-alpine

验证方法与判定标准

  • 容器状态:docker ps输出中test-alpine状态为Up。
  • 网络接口:docker exec test-alpine ip addr show eth0应显示一个eth0接口,且IP地址为172.17.0.x网段(bridge网络默认分配)。
  • 网络连通性:ping -c 3 8.8.8.8应返回0%丢包(若DPU的ARM子系统已配置外部网络路由)。若无法访问外网,可改为ping同一bridge网络内另一个容器的IP,或ping宿主机(DPU ARM)的IP。
  • 基本功能:容器内可正常执行echo、cat /etc/os-release等基础命令,说明容器运行时正常。

常见问题

  • 镜像拉取失败:若ARM子系统无法访问Docker Hub,需配置镜像加速器或使用离线导入的镜像。
  • 网络不通:检查DPU的ARM子系统上行链路(如eth0或enp3s0f0)是否已配置IP和路由。容器默认通过NAT访问外部网络,需确保宿主机IP转发已开启:sysctl net.ipv4.ip_forward=1。
  • 权限问题:若使用非root用户登录,需将用户加入docker组或使用sudo执行docker命令。

以上步骤在BlueField-3 DPU的ARM子系统上完成了Docker容器的运行、网络验证与清理,确认容器基本功能正常。