共计 1972 个字符,预计需要花费 5 分钟才能阅读完成。
为什么要在 Docker 中使用 GPU?
在 AI 和深度学习领域,GPU 加速能大幅提升模型训练和推理效率。通过 Docker 容器化 GPU 环境,可以实现:

- 环境隔离:避免不同项目间的 CUDA 版本冲突
- 快速部署:一键复现实验环境
- 资源控制:灵活分配 GPU 算力
环境准备
1. 确认 NVIDIA 驱动安装
首先检查驱动是否正常工作:
nvidia-smi
正常输出应显示 GPU 信息和驱动版本。如果未安装驱动,需要先安装匹配的 NVIDIA 驱动:
- 禁用 nouveau 驱动:
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf dracut --force - 从 NVIDIA 官网下载对应驱动
- 执行安装后重启
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 配置是否正确
性能优化建议
- 共享 GPU 内存:
docker run --gpus all --shm-size=16g ... - 多容器共享 GPU:
docker run --gpus "device=0" ... # 指定使用第一块 GPU
安全注意事项
- 不要在容器内直接安装 NVIDIA 驱动
- 限制容器资源使用:
docker run --gpus all --cpus 4 -m 8g ...
验证 GPU 支持
运行测试容器:
docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
如果看到与宿主机相同的 GPU 信息输出,说明配置成功。
现在你可以尝试在容器中运行自己的 GPU 应用了!如果在实践中遇到问题,可以参考 NVIDIA 官方文档或社区讨论。
正文完
