需宿主机安装nvidia驱动并配置nvidia container toolkit,使用--gpus参数或docker-compose的devices配置启用gpu,镜像须含cuda运行时。

要在 Docker 容器中使用宿主机的 GPU 资源,核心是让容器能访问 GPU 设备、驱动和 CUDA 库。这不依赖容器内装驱动,而是靠宿主机驱动 + 容器运行时桥接实现。关键在于环境准备、工具安装和启动参数配置三步到位。
确认宿主机 GPU 环境是否就绪
这是前提,缺一不可:
- 宿主机已安装匹配的 NVIDIA 驱动(推荐用
nvidia-smi验证,能正常输出 GPU 列表和温度即通过) - CUDA 工具包可选安装——不是必须,但若容器内要编译 CUDA 代码或运行某些框架(如旧版 PyTorch),建议宿主机也装对应版本的 CUDA Toolkit
- 确保系统为 Linux(Docker 原生 GPU 支持仅限 Linux;Windows/macOS 需借助 WSL2 或远程 Docker daemon)
安装 NVIDIA Container Toolkit
这是当前标准方案,取代了老旧的 nvidia-docker2:
- 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 默认 runtime,
--gpus参数即可直接生效 - 验证:运行
docker run --rm --gpus 1 nvidia/cuda:11.8-base-ubuntu20.04 nvidia-smi,若输出与宿主机一致,说明打通成功
启动容器时启用 GPU
用法简洁,按需选择:
-
--gpus all:挂载全部 GPU,适合单任务或调试 -
--gpus 1:只挂载 1 张 GPU(按设备索引,从 0 开始) -
--gpus '"device=0,1"':指定多张 GPU(注意引号和逗号格式) -
--gpus '"device=0,memory=6144"':限制 GPU 0 显存为 6GB(单位 MB,需驱动支持 CUDA 11.0+)
注意:镜像需含 CUDA 运行时(如 nvidia/cuda、pytorch/pytorch、tensorflow/tensorflow:gpu),纯 Alpine 或 scratch 镜像无法调用 GPU。
Docker Compose 中启用 GPU
在 docker-compose.yml 中写法更结构化:
services:
train:
image: nvidia/cuda:11.8-base-ubuntu20.04
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]- 新版 Compose(v2.20+)支持
deploy.resources.reservations.devices,语义清晰且兼容 Swarm - 旧版可退而使用
runtime: nvidia(需提前配置 Docker 的默认 runtime 为 nvidia,现已不推荐)











