我正在构建一个需要测试GPU可用性的图像。GPU容器运行良好:
$ docker run --rm --runtime=nvidia nvidia/cuda:9.2-devel-ubuntu18.04 nvidia-smi
Wed Aug 7 07:53:25 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.54 Driver Version: 396.54 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 TITAN X (Pascal) Off | 00000000:04:00.0 Off | N/A |
| 24% 43C P8 17W / 250W | 2607MiB / 12196MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
但使用GPU构建时失败:
$ cat Dockerfile
FROM nvidia/cuda:9.2-devel-ubuntu18.04
RUN nvidia-smi
# RUN build something
# RUN tests require GPU
$ docker build .
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nvidia/cuda:9.2-devel-ubuntu18.04
---> cdf6d16df818
Step 2/2 : RUN nvidia-smi
---> Running in 88f12f9dd7a5
/bin/sh: 1: nvidia-smi: not found
The command '/bin/sh -c nvidia-smi' returned a non-zero code: 127
我是docker的新手,但我认为我们在构建镜像时需要进行健全性检查。那么我如何使用cuda runtime构建docker镜像呢?
3条答案
按热度按时间hts6caw31#
使用
--default-runtime=nvidia
配置docker守护进程解决了这个问题。请参考此wiki了解更多信息。
k4ymrczo2#
也许是因为你在Dockerfile上使用了“RUN”命令。我会尝试“CMD”(请参阅此命令的文档)或“ENTRYPOINT”,因为需要使用参数调用“docker run”。我认为“RUN”命令是用于之前的作业,您需要在容器可用之前执行,而不是具有输出和内容的进程。
祝你好运
6g8kf2rb3#
今天(2023年3月27日),我遇到了另一个问题,即用cuda运行时构建docker镜像。
尽管配置了正确的nvidia运行时,我的
docker build .
和docker-compose
命令无法访问CUDA。我通过禁用新的docker build kit解决了这个问题:
或
您也可以通过添加以下内容修改
/etc/docker/daemon.json
来永久禁用新的docker构建工具包:看起来新的docker构建工具包在处理CUDA和GPU方面有一些问题,所以如果你正在使用它,请检查我的解决方案。