使用 cuda 运行时构建 docker 图像
Building docker image with cuda runtime
我正在构建一个需要同时测试 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 运行时构建 docker 图像?
可能是因为您在 Dockerfile 上使用了 "RUN" 命令。由于使用参数调用 'docker run',我会尝试 "CMD"(请参阅此命令的文档)或 "ENTRYPOINT"。
我认为 "RUN" 命令用于容器可用之前需要执行的先前作业,而不是带有输出和内容的过程。
祝你好运,
使用 --default-runtime=nvidia
配置 docker 守护程序解决了问题。
详情请参考this wiki。
我正在构建一个需要同时测试 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 运行时构建 docker 图像?
可能是因为您在 Dockerfile 上使用了 "RUN" 命令。由于使用参数调用 'docker run',我会尝试 "CMD"(请参阅此命令的文档)或 "ENTRYPOINT"。 我认为 "RUN" 命令用于容器可用之前需要执行的先前作业,而不是带有输出和内容的过程。
祝你好运,
使用 --default-runtime=nvidia
配置 docker 守护程序解决了问题。
详情请参考this wiki。