docker内部执行nvidia-smi无任何显示的解决方法
贺志国
2023.4.11
今天在Docker内部编译程序,发现与CUDA
相关的代码居然没有编译,于是在Docker内部执行Nvidia显卡驱动检测命令nvidia-smi
,执行完毕后,无任何输出,也没有任何报错信息,但在Docker外部执行该命令,结果如下图所示,没有任何异常:
最开始我以为是Docker启动有问题,于是连续重启两次,仍然是nvidia-smi
命令无任何输出。仔细观察启动Docker的提示,说是Docker内部的Nvidia显卡驱动异常,未能启用Nvidia显卡,于是按照Nvidia官方网站https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker的方法重新安装NVIDIA Container Toolkit
。安装命令罗列如下(我也是在官网抄过来的):
# 重新安装Docker
curl https://get.docker.com | sh && sudo systemctl --now enable docker
# 设置安装包和GPG key的仓库地址
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.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-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 更新安装源
sudo apt-get update
# 安装nvidia-container-toolkit
sudo apt-get install -y nvidia-container-toolkit
# 配置Docker以便正确识别NVIDIA的容器运行时库
sudo nvidia-ctk runtime configure --runtime=docker
# 重启Docker
sudo systemctl restart docker
本以为万事大吉,结果非常不幸,执行第一步curl https://get.docker.com | sh && sudo systemctl --now enable docker
就出现如下错误:
E: Conflicting values set for option Signed-By regarding source https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64/ /: /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg !=
E: The list of sources could not be read.
官方网站https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/troubleshooting.html提到的第一个难点解疑就是针对该问题的,具体办法就是执行如下两行命令,找到重复的安装源并删除之:文章来源:https://www.toymoban.com/news/detail-466524.html
grep -l "nvidia.github.io" /etc/apt/sources.list.d/* | grep -vE "/nvidia-container-toolkit.list\$"
sudo rm /etc/apt/sources.list.d/nvidia-docker.list
接下来再依次执行上述命令,就可修复Docker内部的Nvidia工具箱,操作截图如下所示:
进入Docker,执行命令nvidia-smi
,就可以看到正确的Nvidia显卡信息了:
文章来源地址https://www.toymoban.com/news/detail-466524.html
到了这里,关于docker内部执行nvidia-smi无任何显示的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!