Docker 容器运行时

NVIDIA 容器运行时(Container Runtime)让 Docker 容器能够访问 DGX Spark 系统上的 GPU 资源。本页介绍其工作原理、安装状态、基本用法以及常见故障排查方法。

概览

NVIDIA 容器运行时基于开放容器计划(OCI)规范提供钩子(hooks),当使用 --gpus 标志时,这些钩子会被触发,从而确保 GPU 设备在容器内部可用。该运行时充当 Docker 与 NVIDIA 驱动之间的桥梁,使容器能够在 AI/ML 工作负载、CUDA 应用及其他 GPU 加速软件中利用 GPU 加速能力。

主要优势:

  • 在容器内无缝访问 GPU
  • 自动管理驱动程序和库
  • 支持多 GPU 配置
  • 兼容主流容器编排平台

该运行时与 NVIDIA Container Toolkit 配合工作,后者提供了将 GPU 设备和 CUDA 库暴露给容器化应用程序所需的组件。

安装

DGX Spark 系统已预装并配置好 NVIDIA Container Toolkit,包括:

  • NVIDIA 容器运行时
  • Docker 集成
  • GPU 设备访问配置
  • CUDA 库管理

运行时开箱即用,可直接运行 GPU 加速容器。

可选:将用户添加到 Docker 组

默认情况下,Docker 需要 sudo 权限才能执行命令。将用户加入 docker 组后,无需 sudo 即可运行 Docker 命令,带来以下好处:

  • 便捷性:每条 Docker 命令前无需输入 sudo
  • 更好的工作流程:与开发工具和脚本无缝集成
  • 减少摩擦:在容器工作时迭代更快

将用户添加到 docker 组:

Bash
sudo usermod -aG docker $USER
newgrp docker

NOTE

此步骤为可选操作。如果不希望修改组成员关系,仍可继续使用 sudo 运行 Docker。

用法

基本 GPU 访问

使用 --gpus 标志运行带 GPU 访问权限的容器:

Bash
docker run -it --gpus=all nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04 nvidia-smi

该命令:

  • 以交互式方式运行容器(-it
  • 启用对所有 GPU 的访问(--gpus=all
  • 使用 NVIDIA CUDA 开发镜像
  • 执行 nvidia-smi 以显示 GPU 信息

设置 GPU 能力

控制容器可使用的 GPU 能力:

Bash
docker run -it --gpus '"capabilities=compute,utility"' nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04 nvidia-smi

验证

测试 GPU 访问

运行以下命令验证 GPU 访问:

Bash
docker run -it --gpus=all nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04 nvidia-smi

预期输出应显示:

  • GPU 设备信息
  • 驱动程序版本
  • CUDA 版本
  • 内存使用情况和温度

故障排查

未找到运行时

如果遇到"runtime not found"(运行时未找到)错误:

  1. 验证 NVIDIA Container Toolkit 是否已安装:
Bash
nvidia-ctk --version
  1. 检查 Docker 守护进程配置:
Bash
cat /etc/docker/daemon.json
  1. 重启 Docker 服务:
Bash
sudo systemctl restart docker

驱动 / 容器 CUDA 版本不匹配

如果出现 CUDA 版本不匹配:

  1. 检查宿主机 CUDA 驱动版本:
Bash
nvidia-smi
  1. 使用与宿主机驱动兼容的 CUDA 版本容器镜像:
Bash
docker run -it --gpus=all nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04 nvidia-smi

权限问题

如果遇到权限错误:

  1. 确认用户已在 docker 组中(如果不使用 sudo):
Bash
groups $USER
  1. 检查设备权限:
Bash
ls -la /dev/nvidia*
  1. 验证 Docker 守护进程是否可访问 GPU 设备:
Bash
sudo docker run -it --gpus=all nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04 nvidia-smi

容器启动失败

如果容器无法启动:

  1. 查看 Docker 日志:
Bash
docker logs <container_id>
  1. 验证宿主机上 GPU 设备是否可用:
Bash
ls /dev/nvidia*
  1. 使用最小化容器进行测试:
Bash
docker run --rm --gpus=all nvcr.io/nvidia/cuda:13.0.1-devel-ubuntu24.04 echo "GPU test successful"

本页译自 NVIDIA 官方文档 NVIDIA Container Runtime for Docker,由社区整理,仅供参考;如与官方英文文档不一致,请以官方为准。