我在 Dockerfile 中构建了一个docker
容器来安装。FROM nvidia/cuda:8.0-devel-ubuntu16.04
CUDA Toolkit
我的架构是官方描述的架构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-smi
在docker
从此链接选择适当的 docker 版本以及正确的 nvidia-driver 版本和 ubuntu 版本以用于您的应用程序 -https://hub.docker.com/r/nvidia/cuda/tags