2025年12月10日 星期三

GPU drive for Docker tool

 這清楚地指出 Docker 引擎在啟動容器時,無法找到或正確配置用於處理 --gpus all 參數的 NVIDIA 容器運行時 (NVIDIA Container Runtime)

您的系統已經執行了 xhost +local:docker 來解決圖形介面 (X Server) 的連線問題,但現在的問題出在 GPU 硬體存取層

🔍 錯誤原因分析

當您使用 --gpus all 時,您需要確保您的 Docker 環境滿足以下兩個條件:

  1. NVIDIA 驅動程式:您的主機作業系統上必須正確安裝了 NVIDIA 顯示卡驅動程式(您剛才檢查過了)。

  2. NVIDIA Docker 支援:您必須安裝了 NVIDIA Container Toolkit (以前稱為 nvidia-docker2)。這是讓 Docker 知道如何將 GPU 資源傳遞給容器的關鍵組件。

如果 Docker 報錯 could not select device driver "" with capabilities: [[gpu]],幾乎可以確定是 缺少或未正確配置 NVIDIA Container Toolkit

🛠️ 解決步驟

您需要安裝並配置 NVIDIA Container Toolkit

步驟 1: 確認或安裝 NVIDIA Container Toolkit

請根據您的 Linux 發行版執行相應的指令。

對於 Debian/Ubuntu 系統 (最常見):

  1. 添加 NVIDIA GPG 密鑰和軟體庫:

    Bash
    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 | \
      sudo 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
    
  2. 更新軟體包列表並安裝 Toolkit:

    Bash
    sudo apt-get update
    sudo apt-get install -y nvidia-container-toolkit
    
  3. 重新啟動 Docker 服務: (這一步非常重要,以確保 Docker 載入新的配置)

    Bash
    sudo systemctl restart docker
    

對於 Red Hat / Fedora / CentOS 系統:

請參考 NVIDIA 官方文件進行安裝,步驟會涉及 dnfyum

步驟 2: 驗證 GPU 支援是否正常

在重新啟動 Docker 服務後,您可以嘗試執行一個輕量級的 NVIDIA 測試容器來驗證配置是否成功:

Bash
docker run --rm --gpus all nvidia/cuda:11.4.0-base nvidia-smi
  • 如果成功,您將看到容器內執行 nvidia-smi 的輸出結果,顯示您的 GPU 資訊。

  • 如果測試成功,那麼您原本的 ROS 容器指令就可以正常執行了。


===================

test nvidia-smi by docker run 

>>ubuntu 20.04

docker pull nvidia/cuda:12.4.1-base-ubuntu20.04

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

>>ubuntu 22.04

docker pull nvidia/cuda:12.4.1-base-ubuntu22.04

docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

沒有留言:

張貼留言