前言
第一次遇到这个问题时,是运行这个命令,报如下错误,
运行:
sudo docker run --rm --gpus=all nvidia/cuda:10.0-base
报错:
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
然后我参考这篇文章docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]问题解决_"docker: error response from daemon: could not sel_一个菜鸟的奋斗的博客-CSDN博客通过安装nvidia-container-toolkit来解决。
但第二天又莫名其妙的遇到这个错误,网上的大部分方法我都试过,比如安装nvidia-container-toolkit 、nvidia-container-runtime这些,都没有解决我的问题。
后来我发现问题来源于/etc/docker/daemon.json文件没有配置对,应该按照如下配置(前提是安装了nvidia-container-runtime,如果没有/etc/docker/daemon.json文件就创建一个,参考这篇文章安装nvidia-container-runtimedocker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]_stoneyshi的博客-CSDN博客_"docker: error response from daemon: could not sel
)
解决办法
1、安装nvidia-container-runtime
在当前目录位置创建一个脚本
vi t.sh
把下面内容复制进去:
sudo curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
sudo curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
然后执行它
sudo bash t.sh
接着执行下面这个
sudo apt-get install nvidia-container-runtime
2、配置/etc/docker/daemon.json文件
sudo vi /etc/docker/daemon.json
把下面内容复制进去
(注意:path后的路径是绝对路径,不能只写nvidia-container-runtime)
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
3、然后运行这个命令重启Docker就解决啦!
sudo systemctl restart docker
我连续遇到了3次这个报错docker: Error response from daemon: could not select device driver with capabilities: [[gpu]],每次解决办法都不一样,可以说有点经验了。
1、首先,检查docker是否正确安装,用下面命令
sudo docker version
如果显示这样的就说明是docker是安装对的,有nvidia那个部分就说明--gpus all选项是能用的,就不会报错docker: Error response from daemon: could not select device driver with capabilities: [[gpu]]。
如果must have 部分没有说明docker没安装好,最好卸载了重装,如果有的GitCommit:后面是空的,也说明docker没装好 ,比如
runc:
version: 1.12.0
GitCommit:
建议直接去下载最新版的docker,安装docker可以参考Ubuntu Docker 安装 | 菜鸟教程
2、无法使用--gpus=all 选项来运行Docker容器。
可能是因为 NVIDIA驱动程序没有正常安装 、 NVIDIA-container-runtime或NVIDIA-container-toolkit没有正常安装或配置 。
有的说是NVIDIA驱动程序与docker版本不兼容,我觉得只要你的NVIDIA驱动程序是近2年安装的,都不用考虑这个问题。
使用下面命令检查NVIDIA驱动程序是否正常安装
nvidia-smi
能看到这样的东西出现,就说明NVIDIA驱动程序正常安装及运行。
NVIDIA-container-toolkit和 NVIDIA-container-runtime只要是参考上面前言里的两篇博客安装的就没有问题。
3、检查下docker daemon是否正在使用nvidia驱动程序。
可以使用下面命令来验证docker daemon是否正在使用nvidia驱动程序,
sudo docker info |grep -i nvidia
如果显示"nvidia:yes"或者有其他正常显示,就说明docker daemon正在使用nvidia驱动程序,这个时候使用--gpus=all选项是不会报错的。
如果显示的是WARNING:No swap limit support或者什么都没显示,就说明是nvidia驱动程序没有被docker daemon使用,这个时候有点麻烦,可能是因为/etc/docker/daemon.json配置文件没配置对,也可能是docker没安装好。
我之前遇到的就是docker没安装好,导致前一天是好的,第二天使用--gpus=all去运行容器又报错docker: Error response from daemon: could not select device driver with capabilities: [[gpu]],这种情况下只需要重新安装docker最新版就可以了。
PS:Docker daemon 是Docker的守护进程,docker安装后默认没有daemon.json这个配置文件,需要进行手动创建(手动创建时前面最好加上sudo,以root身份创建)。配置文件的默认路径:/etc/docker/daemon.json 。
如果在daemon.json文件中进行配置,需要docker版本高于1.12.6(在这个版本上不生效,1.13.1以上是生效的)。文章来源:https://www.toymoban.com/news/detail-788157.html
当我们需要对docker服务进行调整配置时,不用去修改主文件 docker.service的参数,可以通过daemon.json配置文件来管理。文章来源地址https://www.toymoban.com/news/detail-788157.html
到了这里,关于ubuntu下docker: Error response from daemon: could not select device driver with capabilities: [[gpu]]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!