安装NVIDIA Container Toolkit,让gpu容器环境跑通

一、简介

前言:为什么需要它?

在AI模型训练、深度学习推理或图形渲染等场景中,我们常常希望将应用打包在Docker容器中运行,以获得环境一致性和部署便利性。但默认情况下,Docker容器是无法"看见"宿主机的GPU资源的。

NVIDIA Container Toolkit(以前称为nvidia-docker2)就是为了解决这个问题而生的。它充当了Docker与NVIDIA驱动之间的桥梁,让容器内的应用能够像在原生物理机上一样,直接调用宿主机的GPU进行加速计算。

本文将手把手教你如何在Ubuntu系统上安装并配置NVIDIA Container Toolkit,让你的Docker容器也能"跑"起来。

安装前的准备工作

在开始之前,请确保你的环境满足以下两个核心条件:

NVIDIA显卡驱动已安装:宿主机必须已经安装了正确的NVIDIA显卡驱动。你可以在终端输入nvidia-smi命令来验证。如果能正常显示显卡信息列表,说明驱动已就绪。
  • nvidia驱动我是在线装的 装的535版本
复制代码
  apt install -y nvidia-driver-535
Docker已安装并运行:确保Docker Engine已经安装,并且服务处于运行状态。可以通过docker ps命令检查。

docker安装可以看看我之前的博客

要跑 GPU 容器,必须按这个顺序:
复制代码
NVIDIA 驱动 ✅
   ↓
nvidia-smi 正常 ✅
   ↓
nvidia-container-toolkit ✅
   ↓
Docker 才能用 GPU

二、NVIDIA Container Toolkit安装指南:让Docker容器轻松调用GPU

1)添加NVIDIA官方源
复制代码
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
2)更新源并安装Toolkit
复制代码
apt update
apt install -y nvidia-container-toolkit

##慢的话可以考虑加个代理
3)配置 Docker 使用 GPU
复制代码
nvidia-ctk runtime configure --runtime=docker
4)重启 Docker
复制代码
systemctl restart docker 
5)验证驱动和容器工具包状态
复制代码
nvidia-smi >/dev/null 2>&1 && echo "NVIDIA driver OK" || (echo "NVIDIA driver issue"; exit 1) && sudo docker info 2>/dev/null | grep -q "Runtime.*nvidia" && echo "NVIDIA Container Toolkit OK" || (echo "NVIDIA Container Toolkit not configured"; exit 1)
  • 若输出 NVIDIA driver OK + NVIDIA Container Toolkit OK,说明驱动和工具包均配置正常;

  • 若输出 NVIDIA driver issue,需先排查NVIDIA显卡驱动安装问题;

  • 若输出 NVIDIA Container Toolkit not configured,需重新执行二 1)-4)步骤配置Toolkit

三、验证安装是否成功

激动人心的时刻到了!让我们来验证一下,容器是否真的可以使用GPU了。

我们将从NVIDIA官方拉取一个包含CUDA环境的测试镜像,并在容器内运行nvidia-smi命令:

复制代码
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi

命令解读:

  • docker run:启动一个容器。
  • --rm:容器退出后自动删除,保持环境整洁。
  • --gpus all:关键参数!告诉Docker将所有可用的GPU设备都挂载到容器内。
  • nvidia/cuda:12.4.1-base-ubuntu22.04:使用的测试镜像。
  • nvidia-smi:容器启动后要执行的命令。

成功标志 :

如果一切顺利,你将看到与在宿主机上运行nvidia-smi类似的输出,清晰地显示出你的GPU型号、显存使用情况、驱动版本等信息。这就意味着,NVIDIA Container Toolkit已经成功安装并正常工作了!

相关推荐
牢姐与蒯18 小时前
WSL2 迁移教程:把Ubuntu+WSL2从C盘挪到别的盘
linux·运维·服务器·网络·ubuntu·1024程序员节
zxanz119 小时前
证书运维自动化,守住业务 HTTPS 底线
运维·https·自动化
vipxieliang19 小时前
Service Mesh 可观测性:分布式追踪、指标与日志的统一方案
运维
云飞云共享云桌面19 小时前
智能装备工厂研发部门多设计师共享一台SolidWorks服务器做设备装配建模
运维·服务器·网络·人工智能·3d·自动化·制造
tellmewhoisi19 小时前
深度学习26:PyTorch:参数更新方法(Momentum)
人工智能·pytorch·深度学习
Elastic 中国社区官方博客19 小时前
Elastic 在《Forrester Wave™:2026 年第四季度智能运维平台》报告中被评为强劲表现者
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索
Zack_Liu19 小时前
code样例
pytorch·python·深度学习
叼烟扛炮19 小时前
Linux 学习笔记(三十九):网络基石——TCP/IP 模型与 UDP 实战
linux·运维·网络·笔记·学习·tcp/ip
论文复现现场19 小时前
BEVFormer训练需要几张GPU?2张A100 80GB够不够,显存与云GPU成本分析
pytorch·自动驾驶·a100·bevformer
Jack N20 小时前
【Strapi 系列之八】二次开发 + 生产部署,Docker + PostgreSQL + Nginx 一把梭
nginx·docker·postgresql·strapi