当前位置: 首页 > news >正文

带GPU启动 Docker 容器

在 Linux 服务器上启动 Docker 容器并使其能够使用 NVIDIA 显卡(GPU),需要使用 NVIDIA Container Toolkit(之前称为 nvidia-docker)。以下是详细步骤:


1. 确保宿主机满足条件

(1) 宿主机已安装 NVIDIA 驱动

nvidia-smi  # 检查驱动是否正常

如果未安装,先安装 NVIDIA 驱动:

sudo apt update
sudo apt install -y nvidia-driver-535  # Ubuntu/Debian(版本根据显卡调整)
sudo reboot

(2) 安装 NVIDIA Container Toolkit

# 添加 NVIDIA 仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list# 更新并安装
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker

2. 启动 Docker 容器并挂载 GPU

(1) 使用 --gpus 参数

docker run --gpus all -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
  • --gpus all:允许容器访问所有 GPU。
  • nvidia/cuda:11.8.0-base-ubuntu22.04:NVIDIA 官方 CUDA 镜像(可替换为其他镜像)。
  • nvidia-smi:测试 GPU 是否可用。

(2) 指定特定 GPU

docker run --gpus '"device=0,1"' -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
  • "device=0,1":仅使用 GPU 0 和 1(按 nvidia-smi 显示的 ID)。

(3) 使用 Docker Compose

docker-compose.yml 中配置:

version: "3.8"
services:my_gpu_service:image: nvidia/cuda:11.8.0-base-ubuntu22.04deploy:resources:reservations:devices:- driver: nvidiacount: 1  # 使用 1 个 GPUcapabilities: [gpu]command: nvidia-smi

然后运行:

docker compose up

3. 验证 GPU 是否在容器内可用

进入容器并运行:

nvidia-smi

如果正常显示 GPU 信息,说明配置成功。


4. 常见问题

(1) nvidia-smi 报错:command not found

容器内未安装 NVIDIA 工具包,使用 NVIDIA 官方 CUDA 镜像(如 nvidia/cuda:11.8.0-base)或手动安装:

apt update && apt install -y nvidia-utils-535

(2) docker: Error response from daemon: could not select device driver

NVIDIA Container Toolkit 未正确安装,重新安装并重启 Docker:

sudo apt install --reinstall nvidia-container-toolkit
sudo systemctl restart docker

(3) 权限问题

如果 Docker 默认用户无法访问 GPU,可以:

  • 使用 --privileged(不推荐):
    docker run --gpus all --privileged -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
    
  • 或手动添加设备权限:
    docker run --gpus all --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl -it nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi
    

5. 总结

操作命令
安装 NVIDIA Container Toolkitsudo apt install nvidia-container-toolkit
启动带 GPU 的容器docker run --gpus all -it nvidia/cuda:11.8.0-base nvidia-smi
指定 GPU 设备docker run --gpus '"device=0,1"' -it ...
Docker Compose 配置capabilities: [gpu]

成功配置后,Docker 容器即可直接调用宿主机 GPU 进行计算(如 CUDA、PyTorch、TensorFlow)。

http://www.lryc.cn/news/578873.html

相关文章:

  • FAISS 简介及其与 GPT 的对接(RAG)
  • [CS创世SD NAND征文] 精准控制的坚固基石:CS创世SD NAND在华大HC32F4A0运动控制卡中的高可靠应用
  • 7月2日星期三今日早报简报微语报早读
  • Java AQS(AbstractQueuedSynchronizer)详解
  • 【前端】基础 - HTML基础标签和样式设置
  • Baumer工业相机堡盟工业相机如何实现高精度的硬件同步触发
  • 公用LCU屏的功能、应用场景
  • 微信小程序使用wx.chooseImage上传图片时进行压缩,并添加时间水印
  • 微信小程序入门实例_____打造你的专属单词速记小程序
  • PH热榜 | 2025-07-02
  • zabbix批量生成监控项教程!
  • Benchmarking in Go
  • 利器:NPM和YARN及其他
  • SQL Server 再进阶:类型多样性分析与时间维度扩展(第三课)
  • 解锁医疗AI密码:医疗人工智能专业大学四年学习路径
  • android核心技术摘要
  • 数论基础知识和模板
  • 香港券商交易系统开发与解决方案全景报告:云原生、跨境协同与高性能架构的创新实践
  • 【unitrix】 4.13 类型级加一计算(add1.rs)
  • 【GHS】Green Hills软件MULTI-IDE的安装教程
  • 【AI落地应用实战】AIGC赋能职场PPT汇报:从效率工具到辅助优化
  • Javaee 多线程 --进程和线程之间的区别和联系
  • Hadoop集群启动 (ZooKeeper、HDFS、YARN、Hbase)
  • 【网络】Linux 内核优化实战 - net.core.netdev_budget_usecs
  • VSCode-Copilot的系统提示词
  • mac mini m4安装node.js@16以下版本方法
  • Linux下MinIO分布式安装部署
  • REST API设计与Swagger:构建高效、易用的Web服务
  • 如何设置电脑定时休眠?操作指南详解
  • STM32 使用 TinyUSB