這清楚地指出 Docker 引擎在啟動容器時,無法找到或正確配置用於處理 --gpus all 參數的 NVIDIA 容器運行時 (NVIDIA Container Runtime)。
您的系統已經執行了 xhost +local:docker 來解決圖形介面 (X Server) 的連線問題,但現在的問題出在 GPU 硬體存取層。
🔍 錯誤原因分析
當您使用 --gpus all 時,您需要確保您的 Docker 環境滿足以下兩個條件:
NVIDIA 驅動程式:您的主機作業系統上必須正確安裝了 NVIDIA 顯示卡驅動程式(您剛才檢查過了)。
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 系統 (最常見):
添加 NVIDIA GPG 密鑰和軟體庫:
Bashcurl -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更新軟體包列表並安裝 Toolkit:
Bashsudo apt-get update sudo apt-get install -y nvidia-container-toolkit重新啟動 Docker 服務: (這一步非常重要,以確保 Docker 載入新的配置)
Bashsudo systemctl restart docker
對於 Red Hat / Fedora / CentOS 系統:
請參考 NVIDIA 官方文件進行安裝,步驟會涉及 dnf 或 yum。
步驟 2: 驗證 GPU 支援是否正常
在重新啟動 Docker 服務後,您可以嘗試執行一個輕量級的 NVIDIA 測試容器來驗證配置是否成功:
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
沒有留言:
張貼留言