在GPU雲端服務器上安裝Docker環境後,如果未安裝NVIDIA Container Toolkit,通過docker run --gpus all [鏡像名稱]啟動容器鏡像時,可能會出現docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]]報錯,本文為您介紹這種情況的解決方案。
問題描述
在GPU雲端服務器上安裝Docker環境後,通過執行 docker run --gpus all [鏡像名稱] 命令來啟動該Docker容器時,出現如下報錯:
問題原因
NVIDIA Container Toolkit是Docker能夠訪問GPU資源的工具。在GPU雲端服務器上安裝Docker後,如果NVIDIA Container Toolkit未安裝,可能會導致Docker無法選擇GPU裝置,即出現上述報錯。
解決方案
執行以下命令,確認GPU執行個體已安裝NVIDIA GPU驅動。
說明GPU執行個體本身並未配備相關驅動,需要單獨安裝相應驅動。如果NVIDIA GPU驅動未安裝,Docker也無法訪問GPU裝置。
nvidia-smi如果顯示驅動版本(如下圖所示),則表示已成功安裝NVIDIA GPU驅動,否則,請繼續安裝Tesla驅動或安裝GRID驅動。

執行以下命令,確認GPU執行個體已安裝Docker。
sudo docker -v如果顯示Docker版本(如下圖所示),表示Docker已安裝,否則,請繼續安裝並使用Docker和Docker Compose。

執行以下命令,安裝NVIDIA Container Toolkit。
本步驟以CentOS、Alibaba Cloud Linux和Ubuntu為例,其他動作系統的安裝命令,請參見Installing the NVIDIA Container Toolkit。
Alibaba Cloud Linux3/CentOS8作業系統
# 配置源 curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \ sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo # 安裝 sudo yum install -y nvidia-container-toolkit # 重啟Docker服務 sudo systemctl restart dockerUbuntu作業系統
# 配置源 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 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update # 安裝 sudo apt-get install -y nvidia-container-toolkit # 重啟Docker服務 sudo systemctl restart docker
執行以下命令,查看NVIDIA Container Toolkit已成功安裝。
CentOS\Alibaba Cloud Linux作業系統
sudo rpm -qa | grep nvidia-container-toolkitUbuntu作業系統
sudo dpkg -l | grep nvidia-container-toolkit
如果顯示NVIDIA Container Toolkit版本(如下圖所示),表示NVIDIA Container Toolkit已正確安裝。

執行
docker run --gpus all [鏡像名稱]驗證問題已解決。