核心在于驱动、运行时、容器引擎协同:先安装≥525版nvidia驱动并用nvidia-smi验证,再装nvidia-container-toolkit,配置daemon.json启用nvidia运行时,最后用--gpus all运行nvidia/cuda镜像验证。

构建支持GPU硬件加速的容器运行环境,核心在于让容器能安全、稳定、按需访问宿主机上的NVIDIA GPU设备。这不依赖特殊镜像或定制内核,而是通过标准工具链完成——关键是驱动、运行时、容器引擎三者协同。
确认并安装NVIDIA驱动
这是整个流程的前提。没有正常工作的驱动,后续所有配置都无效。
- 运行 nvidia-smi 查看输出:若显示GPU型号、驱动版本和显存状态,说明驱动已就绪
- 若命令未找到或报错,需从NVIDIA官网下载匹配显卡型号和系统内核的驱动(.run文件),执行安装前先禁用nouveau(CentOS/RHEL需编辑
/etc/modprobe.d/blacklist.conf) - Ubuntu/Debian用户可考虑使用
ubuntu-drivers devices自动推荐版本,再用sudo apt install nvidia-driver-XXX安装
安装NVIDIA Container Toolkit
它替代了旧版nvidia-docker,是当前官方推荐的标准组件,负责将GPU设备注入容器并管理CUDA上下文。
- 添加NVIDIA官方APT/YUM源(以Ubuntu为例):
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -curl -s -L 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 - 验证安装:
nvidia-ctk --version应输出版本号;nvidia-ctk runtime list应显示nvidia-container-runtime
配置Docker使用GPU运行时
Docker需明确知道如何调用NVIDIA运行时,通过daemon.json声明即可。
- 编辑
/etc/docker/daemon.json,填入以下内容(若文件不存在可新建):{ "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } }, "default-runtime": "nvidia" } - 重启Docker:
sudo systemctl restart docker - 注意:无需再使用
nvidia-docker命令;所有docker run默认走NVIDIA运行时,除非显式指定--runtime runc
验证GPU容器是否可用
用一条命令快速检验整条链路是否畅通:
- 运行:
sudo docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi - 成功表现:输出与宿主机
nvidia-smi一致的GPU信息表(含温度、显存、进程等) - 常见失败原因:
——驱动未加载(nvidia-smi在宿主机也失败)
——daemon.json格式错误(JSON语法校验建议用jq . /etc/docker/daemon.json)
——nvidia-container-runtime路径不对(可通过which nvidia-container-runtime确认)











