当前位置: 首页 > 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.dtcms.com/a/265086.html

相关文章:

  • (转)使用DockerCompose部署微服务
  • 使用OpenCV识别图片相似度评分的应用
  • 洪水填充算法详解
  • 基于IndexTTS的零样本语音合成
  • 人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)
  • ESP32-s3摄像头驱动开发实战:从零搭建实时图像显示系统
  • sklearn机器学习概述及API详细使用指南
  • LeetCode Hot 100 滑动窗口 【Java和Golang解法】
  • 90.xilinx复位低电平(一般使用低电平复位)
  • 单链表和双向链表
  • python自动化运维
  • Redis基础(2):Redis常见命令
  • 多模态DeepSeek大模型的本地化部署
  • Colormind:优秀大模型赋能国产求解器,打造自主可控建模平台
  • 数学建模_拟合
  • 【Erdas实验教程】026:遥感图像辐射增强(去条带处理)
  • IDEA2025 Version Control 窗口 local changes显示
  • JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘
  • 操作系统考试大题-处理机调度算法-详解-2
  • 代码实现特殊的字段的基本功能
  • 用Rust编写的开源支付解决方案——Hyperswitch
  • springboot集成达梦数据库,取消MySQL数据库,解决问题和冲突
  • nohup java -jar 命令启动jar包,项目仍然会挂掉或者停止运行的解决方案
  • C++——手撕智能指针、单例模式、线程池、String
  • Vue + RuoYi 前后端分离入门手册
  • [深度学习环境踩坑记录]ubuntu22.04安装RTX3060驱动,黑屏、桌面只有壁纸和鼠标,一顿折腾
  • javaWeb02-Tomcat
  • java.sql.SQLSyntaxErrorException: Unknown column ‘user_name‘ in ‘field list‘
  • YOLOv11剪枝与量化(一)模型压缩的必要性
  • Qt写入excel