【问题标题】:nvidia-docker : Unknown runtime specified nvidianvidia-docker : 未知的运行时指定 nvidia
【发布时间】:2018-10-18 02:15:08
【问题描述】:

我在安装 docker-ce 后尝试安装 nvidia-docker。我按照这个:https://github.com/NVIDIA/nvidia-docker 安装 nvidia-docker。它似乎已正确安装。

我试着跑了:

$ sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
docker: Error response from daemon: Unknown runtime specified nvidia.
See 'docker run --help'.

虽然,这可行(没有 --runtime=nvidia):

$ docker container run -ti ubuntu bash

关于我的系统的一些附加信息:它是一个 ubuntu 服务器 16.04,带有 8 个 GPU (Titan Xp) 和 nvidia 驱动程序版本 387.26。我可以在主机系统上运行 nvidia-smi -l 1 并且它按预期工作。

$ dpkg -l | grep -E '(nvidia|docker)'
ii  docker-ce                              18.06.1~ce~3-0~ubuntu                        amd64        Docker: the open-source application container engine
ii  libnvidia-container-tools              1.0.0-1                                      amd64        NVIDIA container runtime library (command-line tools)
ii  libnvidia-container1:amd64             1.0.0-1                                      amd64        NVIDIA container runtime library
ii  nvidia-container-runtime               2.0.0+docker18.06.1-1                        amd64        NVIDIA container runtime
ii  nvidia-container-runtime-hook          1.4.0-1                                      amd64        NVIDIA container runtime hook
ii  nvidia-docker2                         2.0.3+docker18.06.1-1                        all          nvidia-docker CLI wrapper



$ cat /etc/docker/daemon.json 
{
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

我遇到过:https://github.com/NVIDIA/nvidia-docker/issues/501,但我不知道我应该怎么做。

【问题讨论】:

标签: docker nvidia-docker


【解决方案1】:

其实你可以尝试通过以下命令重启 docker daemon。

sudo systemctl daemon-reload
sudo systemctl restart docker

或者您可以尝试重新启动系统。 让 nvidia-docker 工作

【讨论】:

    【解决方案2】:

    看来您可能需要清除 docker 并重新安装它,如帖子中所示: github issues

    sudo apt remove docker-ce
    sudo apt autoremove
    sudo apt-get install docker-ce=5:18.09.0~3-0~ubuntu-bionic
    sudo apt install nvidia-docker2
    

    【讨论】:

    • 链接很好,但您也应该将相关内容从那里复制粘贴到您的帖子中,这样即使将来链接不可用,您的答案仍然有意义。
    • 我相信 sudo apt install nvidia-docker2 自 2020 年 1 月 16 日起已弃用。在 nvidia-docker 的 this 页面上,它建议 sudo apt-get install -y nvidia-container-toolkit
    • E:未找到 'docker-ce' 的版本 '5:18.09.0~3-0~ubuntu-bionic'
    • @Nathan E: 无法定位软件包 nvidia-container-toolkit
    • @MonaJalal 抱歉,不知怎的,我刚刚看到了这个。你让它工作了吗?可能很久没有想到这个了
    【解决方案3】:

    这就是我为 CentOS 7 解决上述问题的方法;希望它可以帮助任何有类似问题的人。

    • 添加必要的存储库以获取 nvidia-container-runtime:
    distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
    curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo
    
    • (可选)就我而言,我禁用了实验性存储库:
    sudo yum-config-manager --disable libnvidia-container-experimental
    sudo yum-config-manager --disable nvidia-container-runtime-experimental
    
    • 安装 nvidia-container-runtime 包:
    sudo yum install nvidia-container-runtime
    
    • 更新 docker 守护进程:
    sudo vim /etc/docker/daemon.json
    

    带有 nvidia-container-runtime 的路径:

    {
        "runtimes": {
            "nvidia": {
                "path": "/usr/bin/nvidia-container-runtime",
                "runtimeArgs": []
            }
        }
    }
    
    • 最后需要让docker更新路径:
    sudo pkill -SIGHUP dockerd
    

    【讨论】:

      【解决方案4】:

      来自nvidia-docker github repo:

      curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
      distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
      curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
      sudo apt-get update
      sudo apt-get install -y nvidia-docker2
      sudo pkill -SIGHUP dockerd
      

      【讨论】:

        【解决方案5】:

        来自nvidia-docker Frequently Asked Questions:

        为什么会收到错误Unknown runtime specified nvidia? 确保运行时已注册到 dockerd。您还需要重新加载 Docker 守护进程的配置。

        【讨论】:

        • 发布网址是不够的。它们可能会失效。
        【解决方案6】:

        将 --runtime=nvidia 标签更改为 --runtine=gpus all 希望它会运行

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-26
          • 2020-01-15
          • 2021-03-25
          相关资源
          最近更新 更多