CentOS7下Docker使用GPU实战指南:从环境配置到避坑实践

1次阅读
没有评论

共计 1972 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

为什么要在 Docker 中使用 GPU?

在 AI 和深度学习领域,GPU 加速能大幅提升模型训练和推理效率。通过 Docker 容器化 GPU 环境,可以实现:

CentOS7 下 Docker 使用 GPU 实战指南:从环境配置到避坑实践

  • 环境隔离:避免不同项目间的 CUDA 版本冲突
  • 快速部署:一键复现实验环境
  • 资源控制:灵活分配 GPU 算力

环境准备

1. 确认 NVIDIA 驱动安装

首先检查驱动是否正常工作:

nvidia-smi

正常输出应显示 GPU 信息和驱动版本。如果未安装驱动,需要先安装匹配的 NVIDIA 驱动:

  1. 禁用 nouveau 驱动:
    echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
    dracut --force
  2. 从 NVIDIA 官网下载对应驱动
  3. 执行安装后重启

2. 安装 Docker CE

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

3. 安装 NVIDIA Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
sudo yum install -y nvidia-container-toolkit
sudo systemctl restart docker

4. 配置 Docker 默认 runtime

编辑 /etc/docker/daemon.json(不存在则创建):

{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []}
  }
}

重启 docker 服务:

sudo systemctl restart docker

Dockerfile 示例

下面是一个支持 GPU 的 PyTorch 环境 Dockerfile:

# 基于官方 CUDA 镜像
FROM nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu20.04

# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHONUNBUFFERED=1

# 安装基础工具
RUN apt-get update && apt-get install -y \
    python3-pip \
    git \
    wget \
    && rm -rf /var/lib/apt/lists/*

# 安装 PyTorch
RUN pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

# 安装常用 AI 库
RUN pip3 install numpy pandas matplotlib scikit-learn jupyterlab

# 设置工作目录
WORKDIR /workspace
CMD ["/bin/bash"]

常见问题解决

1. 权限问题

如果遇到权限错误,将当前用户加入 docker 组:

sudo usermod -aG docker $USER
newgrp docker

2. CUDA 版本不兼容

使用 nvidia-smi 查看驱动版本,根据 官方文档 选择匹配的 CUDA 镜像。

3. 容器内无法识别 GPU

检查:
1. 是否添加了 --gpus all 参数运行容器
2. nvidia-container-toolkit 是否安装正确
3. docker daemon 配置是否正确

性能优化建议

  1. 共享 GPU 内存
    docker run --gpus all --shm-size=16g ...
  2. 多容器共享 GPU
    docker run --gpus "device=0" ... # 指定使用第一块 GPU

安全注意事项

  1. 不要在容器内直接安装 NVIDIA 驱动
  2. 限制容器资源使用:
    docker run --gpus all --cpus 4 -m 8g ...

验证 GPU 支持

运行测试容器:

docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

如果看到与宿主机相同的 GPU 信息输出,说明配置成功。

现在你可以尝试在容器中运行自己的 GPU 应用了!如果在实践中遇到问题,可以参考 NVIDIA 官方文档或社区讨论。

正文完
 0
评论(没有评论)