在 WSL 的 docker 上找不到 nvidia-smi 可执行文件

nvidia-smi executable file not found on docker in WSL

我在 WSL2 Ubuntu 20.04 上设置了 CUDA,并且能够成功地 运行 命令,例如:

docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

docker run -it --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter

但是

docker run --gpus all --rm nvidia/cuda:10.0-runtime nvidia-smi

给我这个错误,我对 docker 的工作原理没有很好的心理模型:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "nvidia-smi": executable file not found in $PATH: unknown.

此命令在 docker 之外有效。

nvidia-smi

nvidia-smi 是否在 Docker 之外工作是无关紧要的。错误消息告诉您图像 nvidia/cuda:10.0-runtime$PATH 上没有 nvidia-smi,这可能意味着它根本没有安装。如果 nvidia-smi 可执行文件在图像上但不在 $PATH 上,那么您只需提供可执行文件的绝对路径。如果可执行文件不在图像上,那么您需要使用不同的图像 $PATH 上有 nvidia-smi,或者通过扩展 nvidia/cuda:10.0-runtime 通过 Dockerfile 或使用不同的图像。

(因为 nvidia-smi 确实是为了开发和系统管理员的目的,所以我并不惊讶标有 runtime 的东西不见了。)