当Docker容器尝试使用GPU时导致服务器重启,通常与以下几个因素有关:
NVIDIA驱动问题:
Docker配置问题:
硬件问题:
内核问题:
# 检查当前NVIDIA驱动版本
nvidia-smi
# 查看推荐驱动版本
ubuntu-drivers devices
# 安装推荐版本驱动(以Ubuntu为例)
sudo apt install nvidia-driver-XXX # XXX替换为推荐版本号
sudo reboot
# 添加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
# 运行测试容器
docker run --gpus all nvidia/cuda:11.0-base nvidia-smi
查看系统日志以确定重启原因:
# 查看内核日志
sudo dmesg | grep -i nvidia
sudo dmesg | grep -i error
# 查看系统日志
journalctl -b -1 | grep -i nvidia # 查看上次启动的日志
# 检查GPU温度
nvidia-smi --query-gpu=temperature.gpu --format=csv
# 检查电源状态
nvidia-smi -q | grep "Power Draw"
如果上述方法无效,可以尝试:
禁用自动重启(用于收集错误信息):
GRUB_CMDLINE_LINUX
,添加panic=60
sudo update-grub
并重启测试不同CUDA版本:
docker run --gpus all nvidia/cuda:10.2-base nvidia-smi
检查内核模块:
lsmod | grep nvidia
完全卸载并重装驱动:
sudo apt purge nvidia*
sudo reboot
# 然后重新安装驱动
bash
docker run --gpus all --memory="8g" --memory-swap="10g" your-image
如果问题仍然存在,建议提供以下信息以便进一步诊断: - 服务器硬件配置 - 操作系统版本 - NVIDIA驱动版本 - Docker版本 - 完整的错误日志