共计 2876 个字符,预计需要花费 8 分钟才能阅读完成。
为什么要在 Docker 中使用 GPU?
在深度学习和 AI 开发中,GPU 加速能大幅提升模型训练和推理的速度。而 Docker 提供了环境隔离和便捷部署的优势,两者结合可以让我们:

- 避免污染宿主机环境
- 快速复现实验条件
- 方便分享和迁移训练环境
常见的应用场景包括:
- TensorFlow/PyTorch 模型训练
- 计算机视觉任务处理
- 大规模数据并行计算
环境准备
1. 确认 NVIDIA 驱动安装
首先确保你的 CentOS7 已经正确安装了 NVIDIA 驱动:
nvidia-smi
如果看到类似下面的输出,说明驱动安装正常:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
如果命令不存在,需要先安装 NVIDIA 驱动:
-
添加 ELRepo 仓库:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -
安装驱动:
yum install nvidia-detect nvidia-detect yum install kmod-nvidia
2. 安装 Docker CE
-
卸载旧版本:
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine -
设置仓库:
yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo -
安装 Docker:
yum install docker-ce docker-ce-cli containerd.io -
启动 Docker:
systemctl start docker systemctl enable docker
3. 安装 nvidia-container-toolkit
-
设置 nvidia-docker2 仓库:
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 -
安装工具包:
yum install -y nvidia-container-toolkit -
配置 Docker 使用 nvidia runtime:
nvidia-ctk runtime configure --runtime=docker systemctl restart docker
Dockerfile 示例
下面是一个支持 GPU 的 PyTorch 环境 Dockerfile:
# 使用 NVIDIA 官方 CUDA 基础镜像
FROM nvidia/cuda:11.8.0-base
# 设置环境变量
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH /opt/conda/bin:$PATH
# 安装基础工具
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
wget \
bzip2 \
ca-certificates \
libglib2.0-0 \
libxext6 \
libsm6 \
libxrender1 \
git \
&& rm -rf /var/lib/apt/lists/*
# 安装 Miniconda
RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
/bin/bash ~/miniconda.sh -b -p /opt/conda && \
rm ~/miniconda.sh && \
/opt/conda/bin/conda clean -tipsy && \
ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc
# 安装 PyTorch
RUN conda install -y pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
# 设置工作目录
WORKDIR /workspace
常见问题解决
1. 权限问题
如果你遇到类似错误:
docker: Got permission denied while trying to connect to the Docker daemon socket...
解决方法:
sudo usermod -aG docker $USER
newgrp docker
2. CUDA 版本与驱动不兼容
错误示例:
CUDA driver version is insufficient for CUDA runtime version
解决方法:
1. 检查驱动支持的 CUDA 版本:
nvidia-smi
2. 选择匹配的 Docker 镜像标签
3. 容器内无法识别 GPU
检查步骤:
1. 确保启动容器时添加了 --gpus all 参数:
docker run --gpus all -it my_gpu_image
2. 检查容器内能否运行nvidia-smi
性能优化建议
-
共享 GPU 内存:
docker run --gpus all --shm-size=8g -it my_gpu_image -
限制 GPU 使用:
docker run --gpus '"device=0,1"' -it my_gpu_image # 只使用 GPU 0 和 1
安全注意事项
- 不要在容器内安装驱动 – 驱动应该安装在宿主机
- 使用资源限制:
docker run --gpus all --cpus 4 --memory 16g -it my_gpu_image
验证 GPU 是否可用
构建并运行容器:
docker build -t gpu_test .
docker run --gpus all -it gpu_test nvidia-smi
你应该看到与宿主机类似的 GPU 信息输出。现在,你可以开始在这个环境中运行你的 GPU 加速应用了!
遇到问题时,建议查阅 NVIDIA 官方文档或相关社区讨论。祝你的 GPU 加速之旅顺利!
正文完
发表至: 未分类
近两天内
