心流logo

could not select device driver "" with capabilities: [[gpu]].

当你在Docker容器中使用GPU时,可能会遇到以下错误:

Error response from daemon: could not select device driver “” with capabilities: [[gpu]]

这个错误通常意味着Docker容器无法选择正确的GPU设备驱动程序。以下是一些可能的解决方法:

1. 检查GPU设备驱动程序

首先,确保已经正确安装了适用于系统和GPU设备的NVIDIA驱动程序。可以通过运行以下命令来验证GPU驱动程序的安装:

nvidia-smi

如果设备驱动程序安装不正确,可能会导致上述错误。

2. 更新Docker版本

使用适合系统的包管理工具(如apt、yum、brew等)来更新Docker到最新版本。例如,使用apt命令更新Docker:

sudo apt update
sudo apt upgrade docker-ce
sudo systemctl restart docker

3. 安装NVIDIA容器工具包

如果通过--gpus all参数调用宿主机GPU失败,可以尝试重新安装一个英伟达的容器工具包。以下是在Ubuntu系统上安装NVIDIA容器工具包的步骤:

  1. 添加NVIDIA的apt软件源:

    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed '#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
    
  2. 从存储库更新包列表:

    sudo apt-get update
    
  3. 安装NVIDIA容器工具包软件包:

    sudo apt-get install -y nvidia-container-toolkit
    
  4. 配置Docker守护程序以使用NVIDIA运行时:

    sudo nvidia-ctk runtime configure --runtime=docker
    
  5. 检查Docker配置文件,确保已启用对GPU的支持:

    {
        "registry-mirrors": [ "https://xxxx.mirror.aliyuncs.com" ],
        "runtimes": {
            "nvidia": {
                "args": [],
                "path": "nvidia-container-runtime"
            }
        }
    }
    
  6. 重新启动Docker守护进程:

    sudo systemctl restart docker
    

4. 重启系统

如果上述方法都无法解决问题,可以尝试重启系统。

5. 检查Docker日志

有时候,错误日志中会包含更多的信息,有助于定位问题。可以通过以下命令查看Docker日志:

docker logs <container_id>

6. 验证GPU设备是否可用

在容器启动之前,可以通过以下命令检查GPU设备是否可用:

docker run --rm -it --gpus all nvidia/cuda:11.4.0-base-ubuntu20.04 nvidia-smi

如果这个命令可以正常运行,说明GPU设备是可用的,问题可能出在Docker容器配置上。

7. 更新WSL2的Linux内核

如果你在Windows 11/10上使用WSL2,可以尝试更新WSL2的Linux内核。具体步骤可以参考Windows 11/10 + WSL2 + USB Camera + Serial的教程。

8. 重新安装Docker

如果以上方法都无法解决问题,可以尝试卸载并重新安装Docker。

9. 寻求社区支持

如果上述方法都无法解决问题,可以尝试在相关技术社区(如Stack Overflow)上提问,寻求更多帮助。