使用docker容器共享主机上可用的PCIe虚拟功能

问题描述 投票:2回答:1

我的主机在SRIOV模式下运行,并且有多个物理设备出现在PCIe总线上。每个物理功能都有32个虚拟功能的集合。我想与docker容器共享一个虚函数。这些是加密/压缩加速器,我为一个写了一个驱动程序;所以当我处理裸机或SRIOV虚拟机管理程序启动虚拟机时,我对SRIOV很熟悉。但现在我正试图访问docker容器中的虚函数。

在主机上我可以lspci并查看我的物理和虚拟设备。但是当我启动一个容器时,我从容器中看到的只是物理功能。

我已经看到“docker run”的“--device”参数,但我认为它不适用于将虚函数传递给容器。

从逻辑上讲,这是我在主机上看到的内容:

[localhost] config # lspci | grep "^85" | head -4
85:00.0 Co-processor: Intel Corporation DH895XCC Series QAT
85:01.0 Co-processor: Intel Corporation DH895XCC Series QAT Virtual Function
85:01.1 Co-processor: Intel Corporation DH895XCC Series QAT Virtual Function
85:01.2 Co-processor: Intel Corporation DH895XCC Series QAT Virtual Function
[localhost] config # lspci | grep "^85" | wc
     33     295    2524

所以我们在85:00.0有一个物理函数,有32个虚函数。

但是当我启动容器并从容器内部进行相同的检查时,我看到的是以下内容:

[localhost] config # lspci | grep QAT
04:00.0 Co-processor: Intel Corporation DH895XCC Series QAT
05:00.0 Co-processor: Intel Corporation DH895XCC Series QAT
85:00.0 Co-processor: Intel Corporation DH895XCC Series QAT

我被告知这可以工作:我可以将虚拟信息发送到容器中,我的驱动程序可以完成剩下的工作。

我的问题:如何将虚拟功能从主机传递到容器中?

docker containers atomic
1个回答
0
投票

正如评论中所提到的(但带有标志名称):

docker run -it --rm --cap-add=SYS_RAWIO ...

然后再次从容器内部尝试lspci。

© www.soinside.com 2019 - 2024. All rights reserved.