首页/AI/大模型部署与运维速查/NVIDIA 容器工具链安装与验证
推理环境与 GPU50 条

NVIDIA 容器工具链安装与验证

让 Docker 能用 GPU 的关键组件:安装 nvidia-container-toolkit、配置容器运行时、重启 Docker,然后用官方测试镜像验证透传。

让容器用上 GPU 的组件

容器本身看不到 GPU,需要容器工具链把设备节点与驱动库映射进去。流程分三步:安装工具链、把它注册成容器运行时、重启容器服务,然后用官方基础镜像验证透传。宿主机驱动是前提条件,容器里没有独立驱动,所谓透传就是把宿主的设备与库映射进容器的命名空间。

安装与配置(Ubuntu 示意)

安装与配置(Ubuntu 示意)
# 按官方文档添加软件源后安装
sudo apt update
sudo apt install -y nvidia-container-toolkit
# 把运行时注册到容器引擎并重启服务
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 确认运行时已被识别
docker info | grep -i nvidia

验证透传

验证透传
# 用基础镜像验证:容器内能看到设备即算通过
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi -L
# 只给指定卡:核对设备数量是否符合预期
docker run --rm --gpus '"device=0,1"' nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi -L

步骤与失败表现

步骤漏做后的表现
安装工具链启动容器时报找不到设备驱动选择器
注册运行时安装完成但容器引擎不认识,症状与未安装相同
重启容器服务配置未生效,仍按旧运行时启动
验证透传问题留到业务容器上才暴露,排查成本更高
限制设备范围业务容器拿到全部设备,资源隔离失效

典型使用场景

  • 新机器初始化:装完驱动后补齐工具链,为后续容器化部署做准备
  • 升级容器引擎后:重新注册运行时并验证透传仍然可用
  • 多卡机器分配:用设备列表限制每个容器可见的卡
  • CI 环境准备:把安装与验证步骤写进镜像构建流水线
  • 故障排查:用基础镜像区分环境问题与业务镜像问题
宿主机驱动是前提:工具链只是搬运工,驱动异常时容器里同样看不到卡,验证顺序要自上而下。
注册运行时之后要重启容器服务:漏掉这一步会让人以为安装失败,重复安装也解决不了。

易错点

  • 安装后忘记注册运行时:症状与未安装完全一样,容易反复重装
  • 注册后不重启容器服务:配置写在文件里但进程未加载
  • 不限制设备范围:每个容器都能看到全部卡,隔离形同虚设
  • 只验证业务容器:环境问题与业务镜像问题混在一起,定位时间翻倍
  • 用特权模式绕过:掩盖真实问题并引入权限风险,不要写进长期配置

数据来源与参考

  • NVIDIA Container Toolkit 文档(docs.nvidia.com/datacenter/cloud-native)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌