插件窝 干货文章 Docker使用gpu服务器就重启

Docker使用gpu服务器就重启

NVIDIA Docker 驱动 版本 495    来源:    2025-04-03

Docker使用GPU导致服务器重启问题分析与解决方案

可能的原因分析

当Docker容器尝试使用GPU时导致服务器重启,通常与以下几个因素有关:

  1. NVIDIA驱动问题

    • 驱动版本不兼容
    • 驱动安装不完整或损坏
    • 驱动与内核版本不匹配
  2. Docker配置问题

    • 未正确安装NVIDIA Container Toolkit
    • Docker运行时配置错误
  3. 硬件问题

    • GPU电源供应不足
    • GPU过热保护
    • 硬件故障
  4. 内核问题

    • 内核模块冲突
    • OOM (内存不足)导致系统崩溃

解决方案

1. 检查并更新NVIDIA驱动

# 检查当前NVIDIA驱动版本
nvidia-smi

# 查看推荐驱动版本
ubuntu-drivers devices

# 安装推荐版本驱动(以Ubuntu为例)
sudo apt install nvidia-driver-XXX  # XXX替换为推荐版本号
sudo reboot

2. 正确安装NVIDIA Container Toolkit

# 添加NVIDIA Docker仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安装nvidia-container-toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

3. 验证Docker GPU支持

# 运行测试容器
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi

4. 检查系统日志

查看系统日志以确定重启原因:

# 查看内核日志
sudo dmesg | grep -i nvidia
sudo dmesg | grep -i error

# 查看系统日志
journalctl -b -1 | grep -i nvidia  # 查看上次启动的日志

5. 检查硬件状态

# 检查GPU温度
nvidia-smi --query-gpu=temperature.gpu --format=csv

# 检查电源状态
nvidia-smi -q | grep "Power Draw"

高级排查步骤

如果上述方法无效,可以尝试:

  1. 禁用自动重启(用于收集错误信息):

    • 在/etc/default/grub中修改GRUB_CMDLINE_LINUX,添加panic=60
    • 执行sudo update-grub并重启
  2. 测试不同CUDA版本

    docker run --gpus all nvidia/cuda:10.2-base nvidia-smi
    
  3. 检查内核模块

    lsmod | grep nvidia
    
  4. 完全卸载并重装驱动

    sudo apt purge nvidia*
    sudo reboot
    # 然后重新安装驱动
    

预防措施

  1. 定期更新驱动和Docker组件
  2. 监控GPU温度和电源状态
  3. 在生产环境使用前进行全面测试
  4. 考虑使用资源限制防止OOM: bash docker run --gpus all --memory="8g" --memory-swap="10g" your-image

如果问题仍然存在,建议提供以下信息以便进一步诊断: - 服务器硬件配置 - 操作系统版本 - NVIDIA驱动版本 - Docker版本 - 完整的错误日志