nvidia-docker:指定了未知的运行时nvidia

23
我在安装了docker-ce之后尝试安装nvidia-docker。我按照这个链接的指导进行安装:https://github.com/NVIDIA/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

关于我的系统,有一些额外的信息:它是一个带有8个GPU(Titan Xp)和nvidia驱动程序版本387.26的ubuntu服务器16.04。我可以在主机系统上运行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,但我不确定该如何处理。


17
--runtime nvidia 只适用于 nvidia-docker2。从 Docker 19.03 开始应使用 --gpus [all|num|dev]。详情请见 https://github.com/NVIDIA/nvidia-docker#usage - BugKiller
1
nvidia-docker已经过时。 - questionto42
这个对我有效: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker - Sheece Gardazi
9个回答

7

来自nvidia-docker的github存储库:

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
实际上,您可以尝试通过以下命令重启Docker守护进程。
sudo systemctl daemon-reload
sudo systemctl restart docker

或者您可以尝试重新启动您的系统, 以使nvidia-docker正常工作。


4

以下是我为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

2
似乎您需要清除 Docker 并重新安装它,就像在此贴子中所述:GitHub 问题页面所示。最初的回答建议您按照那个帖子中的步骤来操作。
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

2
链接很好,但您还应该将相关内容从那里复制粘贴到您的帖子中,这样即使将来链接不可用,您的答案仍然有意义。 - Vaibhav Vishal
6
我相信 sudo apt install nvidia-docker2 已于2020年1月16日被弃用。在nvidia-docker的页面上,建议使用 sudo apt-get install -y nvidia-container-toolkit - Nathan majicvr.com
1
未找到“docker-ce”的版本“5:18.09.03-0ubuntu-bionic”。 - Mona Jalal
1
@Nathan E: 找不到软件包nvidia-container-toolkit。 - Mona Jalal
@MonaJalal 抱歉,不知怎么的我刚看到这个消息。你解决了吗?现在可能已经有一段时间没有考虑过这个问题了。 - Nathan majicvr.com

1

来自nvidia-docker常见问题

为什么我会收到“未知的运行时nvidia”错误? 确保运行时已经在dockerd中注册。您还需要重新加载Docker守护程序的配置。


2
仅仅发布URL并不够,它们可能会失效。 - mate00

1
如果你在安装nvidia-docker时遇到问题,可以尝试运行这个 shell脚本。即使nvidia-docker崩溃了,它也对我有效。

1
在 Docker 版本 19.03 或以上,不再需要使用 nvidia-docker2(已弃用)https://docs.nvidia.com/ai-enterprise/deployment-guide-vmware/0.1.0/docker.html,但他们的文档缺少配置部分。
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd

我相信这会解决原问题。
docker: Error response from daemon: unknown or invalid runtime name: nvidia

如果正确安装了 nvidia-container-toolkitdocker

0

-3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接