是否可以在没有 GPU 的服务器上构建基于 `nvidia/cuda` 的图像?

Mar*_*hac 9 continuous-integration gpu docker nvidia-docker

我有一个Dockerfile基于nvidia/cuda这样的:

FROM nvidia/cuda:11.0-base

...
Run Code Online (Sandbox Code Playgroud)

我希望能够Dockerfile在我们没有 Nvidia GPU 的 CI 服务器上构建它。当我尝试这样做时,我收到此错误:

------
 > [1/6] FROM docker.io/nvidia/cuda:11.0-base:
------
failed to solve with frontend dockerfile.v0: failed to solve with frontend gateway.v0: rpc error: code = Unknown desc = failed to build LLB: failed to load cache key: docker.io/nvidia/cuda:11.0-base not found
Run Code Online (Sandbox Code Playgroud)

该错误表示未找到图像,但我认为这有点误导。我已经能够将问题与是否存在 GPU 隔离开来。

Dockerfile带有 Nvidia GPU 的服务器上构建它时,我没有收到此错误。是否可以在没有 GPU 的服务器Dockerfile上构建基于nvidia/cuda图像的图像?这将节省我们 CI 服务器的成本。

我计划将生成的 docker 容器部署在具有 GPU 的服务器上,换句话说,是否可以将 GPU 的存在推迟到运行时间而不是构建时间?

小智 1

听起来您可能需要加载 nvidia 组件,可能包括任何专有的 blob 和内核模块。如果模块不存在,这可能就是编译错误(缺少依赖项)的原因。

但从这个网站https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html看来驱动程序在加载时正在寻找硬件,这可能就是为什么它们在加载时不可用的原因你尝试编译。