docker内部执行nvidia-smi无任何显示的解决方法

文章描述了在Docker容器中执行nvidia-smi命令无响应的故障,以及通过重新安装NVIDIAContainerToolkit,特别是处理Docker源冲突的步骤来解决问题的过程。最终,通过清理重复的安装源并重启Docker,成功在Docker内部运行nvidia-smi并显示Nvidia显卡信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker内部执行nvidia-smi无任何显示的解决方法

贺志国
2023.4.11

今天在Docker内部编译程序,发现与CUDA相关的代码居然没有编译,于是在Docker内部执行Nvidia显卡驱动检测命令nvidia-smi,执行完毕后,无任何输出,也没有任何报错信息,但在Docker外部执行该命令,结果如下图所示,没有任何异常:
nvidia-smi
最开始我以为是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提到的第一个难点解疑就是针对该问题的,具体办法就是执行如下两行命令,找到重复的安装源并删除之:

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工具箱,操作截图如下所示:
commands_1
commands_2
commands_3
进入Docker,执行命令nvidia-smi,就可以看到正确的Nvidia显卡信息了:
nvidia-smi-docker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值