Docker Run 可以访问 GPU,但 Docker Build 不能访问

Cyp*_*her 7 gpu docker pytorch nvidia-docker

我正在为 NVIDIA GPU 构建 DeepStream Docker 映像,如本链接中所述。

我安装了NVIDIA 容器工具包,原始 Dockerfile 可以运行,构建后我可以使用以下命令启动具有 GPU 支持的容器:

sudo docker run --runtime=nvidia --gpus all --name Test -it deepstream:dgpu
Run Code Online (Sandbox Code Playgroud)

问题是我想在docker build序列期间安装 PyTorch 并使用它。一旦 PyTorch 在构建序列中导入,Found no NVIDIA driver on your system就会出现错误:

#0 0.895 Traceback (most recent call last):
#0 0.895   File "./X.py", line 15, in <module>
#0 0.895     dummy_input = torch.randn([1, 3, 224, 224], device='cuda')
#0 0.895   File "/usr/local/lib/python3.8/dist-packages/torch/cuda/__init__.py", line 229, in _lazy_init
#0 0.895     torch._C._cuda_init()
#0 0.895 RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx
Run Code Online (Sandbox Code Playgroud)

我有适合泊坞窗的驱动程序:

NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6 
Run Code Online (Sandbox Code Playgroud)

完成后我可以正确使用 PyTorch,docker build并且我已经启动了具有 GPU 支持的容器。

因此,该docker build过程似乎没有考虑 NVIDIA 驱动程序或 GPU,我只能在构建完成后使用 GPU。似乎也没有任何--runtime=nvidia --gpus all标志可以传递给docker build命令。

如何解决这个问题,以便我可以在构建过程中使用 PyTorch 和 CUDA?

更新: 问题似乎是由于此处此处此处讨论的 BuildKit 版本造成的。但我还没有找到正确修复它的确切方法(而不是设置DOCKER_BUILDKIT=0)。