核心是安装nvidia container toolkit并配置docker,再通过--gpus参数声明gpu使用方式;需先确保宿主机驱动、cuda和docker正常,镜像须含cuda工具包。

要让 Docker 容器使用宿主机的 GPU,核心是把 GPU 设备、驱动和 CUDA 库“透传”进容器,并确保容器内能识别和调用。这不是 Docker 原生支持的功能,必须依赖 NVIDIA 提供的工具链(针对 NVIDIA GPU)或 ROCm(针对 AMD GPU)。以下以最主流的 NVIDIA GPU 为例,分三步讲清楚怎么做。
确认宿主机 GPU 环境已就绪
容器能否用 GPU,前提全是宿主机的底子是否打牢:
- 运行
nvidia-smi能正常输出 GPU 列表和驱动版本(说明驱动已安装且工作正常); - 驱动版本需与你要用的 CUDA 版本兼容(例如 CUDA 12.x 通常要求驱动 ≥ 525.60.13);
- Docker 本身已安装并正在运行(
systemctl is-active docker返回active)。
安装 NVIDIA Container Toolkit
这是当前推荐的标准方式(取代旧版 nvidia-docker2),它把 GPU 支持集成进 Docker 原生命令中:
- Ubuntu/Debian:
curl -sL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -sL https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker
- 安装后验证:
docker info | grep -i runtime应看到nvidia在列表中。
启动容器时声明 GPU 使用方式
不用改 Dockerfile,也不用写复杂挂载,直接在 docker run 或 docker-compose.yml 中指定:
- 使用全部 GPU:
docker run --gpus all nvidia/cuda:12.2.0-base-ubuntu22.04 nvidia-smi; - 只用第 0 块 GPU:
docker run --gpus '"device=0"' ...; - 限制显存为 4GB(需驱动 ≥ 418.81):
docker run --gpus '"device=0,memory=4096"' ...; - Docker Compose 写法(v2.23+):
services: app: image: nvidia/cuda:12.2.0-base deploy: resources: reservations: devices: - capabilities: [gpu]注意:镜像内需含 CUDA 工具包(如
nvidia/cuda官方镜像),纯 Alpine 或自建基础镜像要手动装cuda-toolkit和cudnn。
不复杂但容易忽略











