Docker 容器配置NVIDIA环境
在 Docker 容器内安装 NVIDIA 以支持 GPU,需要使用 NVIDIA Container Toolkit 并确保宿主机正确安装了 NVIDIA 驱动。以下是详细的步骤:
🔹 1. 确保宿主机已安装 NVIDIA 驱动
在宿主机(非容器)上运行:
nvidia-smi
如果成功显示 GPU 信息,说明 NVIDIA 驱动已正确安装。
如果 nvidia-smi
命令找不到,可能需要安装 NVIDIA 驱动:
sudo apt update
sudo apt install -y nvidia-driver
然后重启宿主机。
🔹 2. 安装 NVIDIA Container Toolkit
如果你的宿主机尚未安装 NVIDIA Container Toolkit,请执行以下操作:
Ubuntu / Debian
curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list |
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' |
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
CentOS / RHEL
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
安装后,重启 Docker 服务:
sudo systemctl restart docker
🔹 3. 运行带 NVIDIA 支持的 Docker 容器
启动支持 GPU 的容器(基于 CUDA 镜像):
docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubuntu22.04 nvidia-smi
如果输出 GPU 相关信息,说明 NVIDIA GPU 已成功在容器内运行。
🔹 4. 让已有容器支持 NVIDIA
如果你已经有一个 Docker 容器(如 my_jupyter_image
),可以使用 --gpus all
选项运行:
docker run -it --gpus all my_jupyter_image
如果你希望给正在运行的容器添加 NVIDIA 相关支持,可以 创建 NVIDIA 运行时:
sudo tee /etc/docker/daemon.json <
然后重启 Docker:
sudo systemctl restart docker
现在你可以使用 --runtime=nvidia
运行容器:
docker run -it --runtime=nvidia my_jupyter_image
🔹 5. 在 Docker 容器内安装 NVIDIA 相关依赖
如果你需要在 Docker 容器内使用 PyTorch 或 TensorFlow 并启用 GPU,可以安装相应的 CUDA 依赖:
(1)在容器内安装 NVIDIA 驱动库
apt update
apt install -y cuda-toolkit
(2)安装 PyTorch(CUDA 版本)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
(3)安装 TensorFlow(CUDA 版本)
pip install tensorflow
🔹 6. 测试 GPU 是否可用
进入容器后,运行以下 Python 代码检查 GPU 是否可用:
import torch
print(torch.cuda.is_available())
print(torch.cuda.device_count())
print(torch.cuda.get_device_name(0))
或者:
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
如果一切正常,你应该能看到你的 GPU 设备。
🔹 总结
✅ 安装 NVIDIA 驱动(宿主机)
✅ 安装 NVIDIA Container Toolkit(宿主机)
✅ 运行 Docker 容器时使用 --gpus all
✅ 在容器内安装 CUDA 相关依赖
这样,你的 Docker 容器就能正确使用 GPU 了!🚀 如果你遇到任何问题,请告诉我!