在 Docker 容器中使用宿主機的 GPU(特別是 NVIDIA GPU)需要安裝?NVIDIA Container Toolkit(之前稱為?nvidia-docker
)。以下是詳細的配置步驟:
1. 宿主機環境準備
確保宿主機已正確安裝:
-
NVIDIA 顯卡驅動:
nvidia-smi # 檢查驅動是否安裝成功
-
Docker Engine:
docker --version # 確保 Docker 已安裝
2. 安裝 NVIDIA Container Toolkit
步驟 1:添加倉庫和密鑰
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
步驟 2:更新并安裝工具包
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit nvidia-container-runtime
運行以下命令檢查是否已安裝:
which nvidia-container-runtime
運行以下命令檢查是否安裝了必要的包:
dpkg -l | grep -E "nvidia-container-(toolkit|runtime)"
步驟 3:重啟 Docker 服務
sudo systemctl restart docker
3. 驗證安裝
運行一個測試容器(如?nvidia/cuda:11.0-base
):
docker run --rm --gpus all ?nvidia/cuda:12.8.1-base-ubuntu22.04 nvidia-smi
如果看到與宿主機相同的 GPU 信息,則配置成功。
4. 運行容器時指定 GPU
-
使用所有 GPU:
docker run --gpus all your_image
-
使用特定 GPU(如 GPU 0 和 1):
docker run --gpus '"device=0,1"' your_image
-
限制 GPU 內存:
docker run --gpus all --gpus '"device=0,1"' --memory="8g" your_image
5. 其他注意事項
-
CUDA 版本兼容性:容器內的 CUDA 版本需 ≤ 宿主機的驅動版本(通過?
nvidia-smi
?頂部顯示的?CUDA Version
?查看)。 -
非 NVIDIA GPU:如果是 AMD/Intel GPU,需使用對應的 Docker 插件(如?
rocm
?或?intel-gpu
)。 -
Kubernetes 支持:若需在 Kubernetes 中使用 GPU,需配置?
nvidia-device-plugin
。
常見問題
-
錯誤?
docker: Error response from daemon: could not select device driver...
確保?nvidia-container-toolkit
?已安裝并重啟 Docker。 -
CUDA 版本不匹配
拉取與宿主機驅動兼容的 CUDA 鏡像,例如:docker pull ?nvidia/cuda:12.8.1-base-ubuntu22.04 # 根據實際情況選擇版本
通過以上步驟,Docker 容器即可直接調用宿主機 GPU 資源。如果需要更復雜的配置(如多 GPU 隔離),可參考?NVIDIA Container Toolkit 官方文檔。