使用cuda运行时构建docker映像

使用cuda运行时构建docker映像,docker,nvidia-docker,Docker,Nvidia Docker,我正在构建一个需要同时测试GPU可用性的映像。GPU容器运行良好: $docker run--rm--runtime=nvidia nvidia/cuda:9.2-devel-ubuntu18.04 nvidia smi 2019年8月7日星期三07:53:25 +-----------------------------------------------------------------------------+ |NVIDIA-SMI 396.54驱动程序版本:396.54| |----

我正在构建一个需要同时测试GPU可用性的映像。GPU容器运行良好:

$docker run--rm--runtime=nvidia nvidia/cuda:9.2-devel-ubuntu18.04 nvidia smi
2019年8月7日星期三07:53:25
+-----------------------------------------------------------------------------+
|NVIDIA-SMI 396.54驱动程序版本:396.54|
|-------------------------------+----------------------+----------------------+
|GPU名称持久化-M |总线Id显示A |易失性解聚。ECC|
|风扇温度性能Pwr:使用率/上限|内存使用率| GPU Util Compute M|
|===============================+======================+======================|
|0泰坦X(帕斯卡)关闭| 00000000:04:00.0关闭|不适用|
|24%43C P8 17W/250W | 2607MiB/12196MiB | 0%默认值|
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
|进程:GPU内存|
|GPU PID类型进程名称用法|
|=============================================================================|
+-----------------------------------------------------------------------------+
但在使用GPU构建时失败:

$cat Dockerfile
来自nvidia/cuda:9.2-devel-ubuntu18.04
运行nvidia smi
#运行构建一些东西
#运行测试需要GPU
$docker构建。
正在将生成上下文发送到Docker守护程序2.048kB
步骤1/2:来自nvidia/cuda:9.2-devel-ubuntu18.04
--->cdf6d16df818
步骤2/2:运行nvidia smi
--->在88f12f9dd7a5中运行
/bin/sh:1:nvidia smi:未找到
命令'/bin/sh-c nvidia smi'返回一个非零代码:127

我是docker的新手,但我认为我们在构建图像时需要进行心智检查。那么,我如何使用cuda运行时构建docker映像呢?

可能是因为您在Dockerfile上使用了“RUN”命令。我会尝试使用“CMD”(请参阅此命令的文档)或“ENTRYPOINT”,因为使用参数调用“dockerrun”。 我认为“RUN”命令用于容器可用之前需要执行的以前的作业,而不是带有输出和其他内容的进程


祝您好运,

使用
--default runtime=nvidia配置docker守护程序解决了问题


有关更多信息,请参阅。

未找到错误127命令。所以您没有安装nvidia smi或available@talonmies我可以在主机和docker容器中运行nvidia smi。它仅在构建docker映像时失败。因此,docker构建没有可用的nivida smiprocess@talonmies对我尝试在构建时添加
--runtime=nvidia
,但没有成功。实际上,我在构建映像时而不是容器可用后运行测试。这些测试确保生成的二进制文件是正确的。有关docker>=19.03的更新答案,请参阅,如果不想修改docker守护程序的参数,可以将“-runtime=nvidia”传递给“docker run”命令,这也很有用。