ubuntu下docker: Error response from daemon: could not select device driver with capabilities: [[gpu]]

前言

第一次遇到这个问题时,是运行这个命令,报如下错误,

运行:
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以上是生效的)。

        当我们需要对docker服务进行调整配置时,不用去修改主文件 docker.service的参数,可以通过daemon.json配置文件来管理。

  • 0
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Docker是一种开源的容器化平台,可以帮助开发者将应用程序和其依赖环境打包成一个独立、可移植的容器。然而,当运行Docker命令时,有时会遇到错误信息:"docker: error response from daemon: could not select device driver "" with c"。 这个错误通常是由于操作系统或Docker配置问题引起的。可能的原因和解决方法如下: 1. 操作系统不兼容:该错误可能是由于操作系统版本过低或过高导致的。请确保您使用的操作系统版本符合Docker的要求。您可以通过查看Docker官方文档或论坛来了解您的操作系统是否支持。 2. Docker配置问题:这个错误也可能是由于Docker的配置问题引起的。您可以尝试重新配置Docker,确保正确设置了Docker的驱动程序。您可以在Docker配置文件中找到有关驱动程序的设置,并按照官方文档指导进行配置。 3. 硬件驱动问题:这个错误也可能是由于硬件驱动问题引起的。如果您在某些比较特殊的硬件环境中运行Docker,可能需要额外安装或配置相关的硬件驱动。请参考硬件供应商的文档或支持资源来了解如何正确配置硬件驱动。 总结来说,错误"docker: error response from daemon: could not select device driver "" with c"通常是由于操作系统或Docker配置问题引起的。您可以通过确保操作系统兼容性、重新配置Docker或解决硬件驱动问题来解决这个错误。如果问题仍然存在,您可以参考Docker官方文档或论坛寻求进一步的支持和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值