草庐IT

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

qinzhihao12345 2023-04-08 原文

前言

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

运行:
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配置文件来管理。

有关ubuntu下docker: Error response from daemon: could not select device driver with capabilities: [[gpu]]的更多相关文章

  1. ruby - 如何在 Ubuntu 中清除 Ruby Phusion Passenger 的缓存? - 2

    我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题:

  2. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  3. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  4. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  5. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  6. ruby - ri 有空文件 – Ubuntu 11.10, Ruby 1.9 - 2

    我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da

  7. ruby - 在 Ubuntu 14.04 中使用 Curl 安装 RVM 时出错 - 2

    我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack

  8. ruby - rails 3.2.2(或 3.2.1)+ Postgresql 9.1.3 + Ubuntu 11.10 连接错误 - 2

    我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat

  9. ruby-on-rails - Ubuntu 14.04 Rails 丢失文件 - 2

    安装Rails时,一切都很好,但后来,我写道:rails-v和输出:/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require':cannotloadsuchfile--rails/cli(LoadError)from/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`r

  10. Ubuntu20.04系统WineHQ7.0安装微信 - 2

    提供3种Ubuntu系统安装微信的方法,在Ubuntu20.04上验证都ok。1.WineHQ7.0安装微信:ubuntu20.04安装最新版微信--可以支持微信最新版,但是适配的不是特别好;比如WeChartOCR.exe报错。2.原生微信安装:linux系统下的微信安装(ubuntu20.04)--微信适配的最好,反应最快,但是微信版本只到2.1.1,版本太老,很多功能都没有。3.深度deepin-wine6安装微信:ubuntu20.04+系统deepin-wine6安装新版微信--综合比较好,当前个人使用此种方法1个月,微信版本3.4;没什么大问题,尚可。一、WineHQ7.0安装微信

随机推荐