完整教程:在 Linux 下使用 Docker 配置 NVIDIA 4090 深度学习环境
第一部分:宿主机环境准备
1. 安装 Linux 系统
- 推荐发行版:Ubuntu 22.04 LTS(对 NVIDIA 驱动支持最佳)
- 安装方式:
- 物理机安装:制作启动盘,彻底替代现有系统。
- 虚拟机安装(仅测试用途):需启用 PCIe 直通(对 GPU 性能有损耗)。
- 系统更新:
1
sudo apt update && sudo apt upgrade -y
2. 安装 NVIDIA 驱动
- 禁用 Nouveau 驱动:
1
2
3sudo bash -c "echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist.conf"
sudo update-initramfs -u
sudo reboot - 安装驱动:
1
2
3
4
5
6
7
8
9
10# 添加官方驱动源
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
# 查找适用于 4090 的最新驱动
ubuntu-drivers devices
# 安装推荐驱动(例如 535 版本)
sudo apt install nvidia-driver-535
sudo reboot - 验证安装:
1
nvidia-smi # 应显示 GPU 信息和 CUDA 版本
第二部分:配置 Docker 与 GPU 支持
1. 安装 Docker
1 | # 卸载旧版本 |
2. 配置 NVIDIA Container Toolkit
1 | # 添加源 |
第三部分:Docker 核心操作指南
1. 镜像管理
命令 | 说明 |
---|---|
docker images |
查看本地镜像 |
docker pull nvidia/cuda:12.2.0-devel-ubuntu22.04 |
拉取镜像 |
docker rmi <image_id> |
删除镜像 |
2. 容器生命周期
命令 | 说明 |
---|---|
docker run -it --gpus all ubuntu bash |
启动新容器 |
docker start <container_id> |
启动已停止的容器 |
docker stop <container_id> |
停止运行中的容器 |
docker rm <container_id> |
删除容器 |
3. 数据持久化
1 | # 挂载主机目录到容器 |
4. 网络配置
1 | # 映射端口 |
第四部分:构建深度学习容器
1. 创建 Dockerfile
1 | # 使用 PyTorch 官方镜像(CUDA 12.1) |
2. 构建镜像
1 | docker build -t my-dl-project . |
3. 运行容器
1 | docker run -it --rm --gpus all \ |
第五部分:多 CUDA 版本管理
1. 项目 A:CUDA 12.2 + PyTorch 2.3
1 | # Dockerfile.cuda12 |
2. 项目 B:CUDA 11.8 + TensorFlow 2.13
1 | # Dockerfile.cuda11 |
3. 启动不同版本容器
1 | # 构建镜像 |
第六部分:高级技巧
1. 多阶段构建优化
1 | # 构建阶段 |
2. 使用 Docker Compose
1 | # docker-compose.yml |
第七部分:验证与调试
1. 检查 GPU 是否可用
1 | import torch |
2. 查看 CUDA 版本
1 | # 容器内执行 |
3. 常见问题排查
- CUDA 不可用:
- 检查
--gpus all
参数 - 确认
nvidia-container-toolkit
已安装
- 检查
- 权限问题:
1
2sudo usermod -aG docker $USER # 将用户加入 docker 组
newgrp docker # 刷新组权限
总结
通过本教程,你可以:
- 在 Linux 系统中为 NVIDIA 4090 配置深度学习环境
- 使用 Docker 实现完全隔离的 Python/CUDA 环境
- 自由切换不同 CUDA 版本(11.x/12.x)
- 编译 C/C++ 扩展并打包为 wheel
- 通过数据卷持久化实验结果