欢迎光临
我们一直在努力

如何解决docker: Error response from daemon: unknown or invalid runtime name: nvidia

在使用Docker部署AI模型或进行深度学习训练时,我们经常需要利用NVIDIA GPU进行加速。然而,尝试运行带有–runtime=nvidia或现代–gpus all参数的容器时,可能会遇到以下错误:


1
docker: Error response from daemon: unknown or invalid runtime name: nvidia

这个错误表明Docker守护进程(Daemon)不知道如何处理名为nvidia的运行时。这不是Docker本身的问题,而是缺少了连接Docker和NVIDIA驱动的桥梁——NVIDIA Container Toolkit(即以前的nvidia-docker2)。

本文将提供详细的步骤,解决此问题并正确配置您的AI基础设施。

预备知识与环境检查

在安装Toolkit之前,请确保您的系统满足以下条件:

  1. NVIDIA驱动已安装: 确保驱动程序已正确安装并且可以识别您的GPU。

1
2
nvidia-smi
# 运行此命令应显示您的GPU信息,而不是“Command not found”或错误。
  1. Docker Engine已安装: 确保Docker服务正在运行。

步骤一:安装NVIDIA Container Toolkit

NVIDIA Container Toolkit是解决此问题的核心组件。它负责自动将NVIDIA容器运行时集成到Docker中。

针对 Ubuntu/Debian 系统

推荐使用NVIDIA官方的存储库进行安装。

  1. 配置存储库:

1
2
3
4
5
6
7
8
# 1. 添加NVIDIA GPG Key
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

# 2. 添加存储库源
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/debian/$(. /etc/os-release; echo $ID$VERSION_ID)" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 3. 更新APT索引
sudo apt update
  1. 安装Toolkit:

1
sudo apt install -y nvidia-container-toolkit

针对 CentOS/RHEL 系统


1
2
sudo dnf config-manager --add-repo https://nvidia.github.io/libnvidia-container/centos9/libnvidia-container.repo
sudo dnf install -y nvidia-container-toolkit

步骤二:配置与重启Docker服务

安装Toolkit后,您需要通知Docker守护进程进行配置更改并重启服务,使新的运行时生效。

  1. 配置Docker:

运行以下命令,使用nvidia-ctk工具配置Docker。这通常会自动修改 /etc/docker/daemon.json 文件,添加nvidia运行时配置。


1
sudo nvidia-ctk runtime configure --runtime=docker

配置完成后,/etc/docker/daemon.json的内容可能看起来像这样(如果文件原本为空,则只包含“runtimes”部分):


1
2
3
4
5
6
7
8
{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
  1. 重启Docker服务:

1
sudo systemctl restart docker

步骤三:验证GPU运行时

重启服务后,Docker守护进程现在应该能够识别并使用nvidia运行时了。我们可以通过运行一个简单的CUDA容器来验证是否成功。

注意: 现代Docker推荐使用–gpus all而不是遗留的–runtime=nvidia


1
2
# 运行一个官方的CUDA基础镜像,并执行nvidia-smi
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

如果配置成功,您将看到容器内部输出了与宿主机上运行nvidia-smi时相同的GPU信息。如果仍然报错,请仔细检查步骤一和步骤二的执行情况,特别是Docker服务是否已经重启。

总结

解决unknown or invalid runtime name: nvidia错误的核心在于正确安装和配置 NVIDIA Container Toolkit,它是Docker与NVIDIA GPU之间进行通信的必要桥梁。通过遵循上述步骤,您可以确保您的AI工作负载能够高效地利用GPU资源进行加速部署。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 如何解决docker: Error response from daemon: unknown or invalid runtime name: nvidia
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址