6. 使用 Docker 搭建测试环境

可使用 Docker 搭建 libsophon 的测试环境, 这里介绍环境的搭建流程和使用方法。

进行此部分操作前请参照 安装libsophon 中内容在 host 端安装 sophon-driver!

6.1. Docker 测试环境搭建

6.1.1. 安装 Docker

参考 官网教程 进行安装:

# 卸载 docker
sudo apt-get remove docker docker.io containerd runc

# 安装依赖
sudo apt-get update
sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release

# 获取密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL \
    https://download.docker.com/linux/ubuntu/gpg | \
    gpg --dearmor -o docker.gpg && \
    sudo mv -f docker.gpg /etc/apt/keyrings/

# 添加 docker 软件包
echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
    https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

6.1.2. 构建测试镜像及容器

6.1.2.1. 构建镜像

使用 dockerfile 构建测试所需的 Docker 镜像, dockerfile 位于 从官网下载的SDK包中libsophon 文件夹下。构建镜像前请检查系统时间是否准确,错误的系统时间会导致构建过程中更新 package list 时证书验证失败。

# 替换以下 path/to/libsophon 为实际 libsophon 路径
cd path/to/libsophon
sudo docker build -t image_name:image_version -f libsophon_dockerfile .

以上 image_nameimage_version 可自定义。

运行完以上命令后, 可运行 docker images 命令核对构建结果, 命令输出应如下:

$ sudo docker images
REPOSITORY   TAG               IMAGE ID     CREATED          SIZE
image_name      image_version  image_id        create_time         size

以上内容中 image_nameimage_version 应与构建时设置内容一致, image_idcreate_timesize 应与实际情况相符合。

6.1.2.2. 创建容器

在 Docker 容器中进行测试需要依赖 libsophon 动态库, 依赖可分以下两种方法建立:

  1. 在host端安装sophon-libsophon和sophon-libsophon-dev, 然后通过文件映射将动态库映射进 Docker 容器中;

# sophon-libsophon 和 sophon-libsophon-dev 安装在 host 端
sudo docker run \
    -td \
    --privileged=true \
    -v /opt/sophon:/opt/sophon \
    -v /etc/profile.d:/etc/profile.d \
    -v /etc/ld.so.conf.d:/etc/ld.so.conf.d \
    --name container_name image_name:image_version bash
  1. 直接在 Docker 容器中安装 sophon-libsophon 和 sophon-libsophon-dev。

# 在 Docker 容器中安装 sophon-libsophon 和 sophon-libsophon-dev
sudo docker run \
    -td \
    --privileged=true \
    --name container_name image_name:image_version bash

通过以上两种方法建立动态依赖前请首先前请参照 安装libsophon 中内容在 host 端安装 sophon-driver, 安装 sophon-libsophon 和 sophon-libsophon-dev 参考 安装libsophon 中对应内容。

以上 image_nameimage_version 对应创建镜像时的内容, container_name 可自定义。

6.2. 测试环境生效

为确保已经构建的 Docker 环境能正常使用 libsophon, 进入 Docker 容器运行以下命令:

# 进入 Docker 容器
sudo docker exec -it container_name bash

# 在 Docker 容器中运行此命令以确保 libsophon 动态库能被找到
ldconfig

# 在 Docker 容器中运行此命令以确保 libsophon 工具可使用
for f in /etc/profile.d/*sophon*; do source $f; done

运行以上命令后可运行 bm-smi 命令以检查是否可正常使用 libsophon, 命令输出应与 bm-smi使用说明 中对应内容相符。

注意Docker内部时区为UTC时区,用户可根据需要手动修改Docker内的时区。