Nvidia Docker:nvidia-smi:找不到命令

Nvidia Docker:nvidia-smi:找不到命令

我在 Dockerfile 中构建了一个docker容器来安装。FROM nvidia/cuda:8.0-devel-ubuntu16.04CUDA Toolkit

我的架构是官方描述的架构Nvidia-docker回购协议

nvidia-docker 层

构建并运行后我得到

$ nvidia-smi
bash: nvidia-smi: command not found

我有一个DOCKER_HOST指向正在运行的 Docker Nvidia 容器(GPU 机器),例如

export DOCKER_HOST=tcp://x.x.x.x:2376
export DOCKER_TLS_VERIFY=1
set NVIDIA_VER=367.57

我在与机器建立隧道时连接到绑定端口的 docker 实例:

$ ssh -i "$DOCKER_CERT" docker@$IP -g -R 10250:localhost:10250 -L 0.0.0.0:3000:127.0.0.1:3000  -L 0.0.0.0:8181:127.0.0.1:8181 -L 5858:127.0.0.1:5858 -L 4567:127.0.0.1:4567

我的 docker 实例照常启动

$ docker run --rm -it --name $CONTAINER_NAME -p 3000:3000 $CONTAINER_IMG:$CONTAINER_VERSION $CMD

我可以从 docker 主机连接到 docker nvidia 实例:

loreto@nvidia-docker:~$ sudo nvidia-docker run --rm nvidia/cuda nvidia-smi
Fri Mar 17 09:08:03 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N/A |
| N/A   35C    P8    17W / 125W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

乃至

loreto@nvidia-docker:~$ nvidia-smi
Fri Mar 17 09:12:59 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57                 Driver Version: 367.57                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GRID K520           Off  | 0000:00:03.0     Off |                  N/A |
| N/A   35C    P8    17W / 125W |      0MiB /  4036MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |

而在我的容器中$CONTAINER_NAME运行时我看不到它

$ docker exec -it $CONTAINER_NAME bash
$ nvidia-smi
nvidia-smi: command not found

$CONTAINER_NAME建成FROM nvidia/cuda:8.0-devel-ubuntu16.04

我已经向 nvidia-docker github repo 提出了这个问题这里

[更新] 我已经解决了这个问题,在运行时附加设备并在容器上设置驱动程序,如下所示:

docker run --rm -it --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia0 -v nvidia_driver_367.57:/usr/local/nvidia:ro --name $CONTAINER_NAME -p 3000:3000 $CONTAINER_IMG:$CONTAINER_VERSION $CMD

当然DOCKER_HOST必须设置并且隧道必须打开。

答案1

nvidia-docker在正常安装的版本上安装docker

命令是:

卷曲https://get.docker.com| sh
&& sudo systemctl --现在启用 docker

然后

分布=$(./etc/os-release;echo $ID$VERSION_ID)
&& curl -fsSLhttps://nvidia.github.io/libnvidia-container/gpgkey| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
&&curl -s -Lhttps://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list|
sed 's#deb https://#deb [签名者=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' |
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

然后

sudo apt-get 更新

然后

sudo apt-get install -y nvidia-docker2

现在安装完成后nvidia-docker2- 首先使用 groups 命令检查您的用户 ID 所属的组

团体

如果您没有看到docker列出的组,请先运行此命令

sudo groupadd 码头工人

须藤 usermod -aG docker $USER

现在您需要注销并再次登录(如果由于远程 ssh 服务器而无法执行此操作 - 则使用 ssh 打开一个新终端到同一服务器)。

跑步

sudo systemctl 重新启动 docker

现在再次检查groups。您应该会看到您的用户 ID 包含该docker组。如果不是这种情况 - 首先解决这个问题。然后运行:

sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

您现在应该已经nvidia-smidocker

从此链接选择适当的 docker 版本以及正确的 nvidia-driver 版本和 ubuntu 版本以用于您的应用程序 -https://hub.docker.com/r/nvidia/cuda/tags

相关内容