Nvidia Jetson nano docker中使用cuda
很多时候,在容器中需要用到cuda环境,但相对来说,在主机上安装cuda比在容器中安装cuda是更简单的
而且主机安装了,容器中再安装,岂不是多此一举,浪费我仅剩不多的空间(哭泣)
现默认主机已经安装好cuda
unknown or invalid runtime name: nvidia
很多博客在写docker中使用主机cuda时,都会建议在创建容器时,加入一个参数--runtime nvidia
但运行时却出现如下问题
docker: Error response from daemon: unknown or invalid runtime name: nvidia
Run 'docker run --help' for more information
这是因为你的 Docker 没有配置 NVIDIA Runtime,所以它不认识 --runtime nvidia。
在 Jetson Nano 或普通 Linux 上,默认安装的 Docker 里是没有 nvidia runtime 的,需要额外安装 NVIDIA Container Toolkit。
安装 NVIDIA Container Toolkit
在主机下运行(不是容器中):
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
配置 Docker 运行时
安装好后,执行:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
确认 NVIDIA runtime 已经注册:
docker info | grep -i runtime
输出里有以下类似的内容,就表示你成功了:
Runtimes: nvidia runc
Default Runtime: runc
创建容器
其中cuda版本,可以在/usr/local/目录下寻找
docker run -it \
--runtime nvidia \
--gpus all \
-e NVIDIA_VISIBLE_DEVICES=all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-v /usr/local/cuda-12.6:/usr/local/cuda-12.6 \
-v /usr/local/cuda:/usr/local/cuda \
your_image:tag
容器中验证cuda环境
运行
nvcc --version
会出现:
bash: nvcc: command not found
但在挂载的目录中确实能看到cuda的目录。这是因为没设置 PATH,所以找不到 nvcc。
你可以在容器里执行:
记得修改自己的cuda版本
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
export CUDACXX=/usr/local/cuda-12.6/bin/nvcc
然后继续运行nvcc --version,就能找到cuda了
其他问题
有些人可能会在容器中运行
nvidia-smi
来查看是否能够使用GPU。但结果是
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system.
Please also try adding directory that contains libnvidia-ml.so to your system PATH.
很明显是失败了。
这是因为 Nano 的 GPU 是 Tegra GPU(集成 GPU),它没有 nvidia-smi 工具,libnvidia-ml.so 也不存在。
nvidia-smi 只能在 x86 PC 上的离散显卡用,在 Jetson 系列不能用。
需要运行
cat /etc/nv_tegra_release
就可以看到 L4T / JetPack / CUDA 版本
更多推荐


所有评论(0)