docker rocky容器安装cuda
时间: 2025-04-26 22:28:52 浏览: 24
<think>好的,用户想在Docker的Rocky Linux容器中安装CUDA,我需要帮他解决这个问题。首先,我得回忆一下相关的步骤。用户可能已经有一些Docker的基础,但可能不熟悉如何在Rocky Linux环境下配置CUDA。
首先,我需要确定Rocky Linux的版本是否支持CUDA。Rocky Linux是RHEL的兼容版本,所以应该和CentOS/RHEL的步骤类似。根据引用[1]和[5],CentOS使用yum安装nvidia-docker2,而Rocky Linux可能也是用dnf或者yum。用户提到的是Rocky Linux 8,所以在安装NVIDIA驱动和CUDA工具包时,可能需要启用EPEL或其他仓库。
然后,安装NVIDIA Container Toolkit是关键,这样Docker才能使用GPU。根据引用[3]和[4],安装nvidia-docker2后需要重启Docker服务,并验证安装。用户的环境是无网络的吗?根据引用[2],如果无网络的话可能需要离线安装,但用户的问题里没有提到,所以假设有网络。
接下来,构建Dockerfile的时候,需要选择合适的基础镜像。NVIDIA提供了CUDA基础镜像,比如nvidia/cuda:12.2.2-base-rockylinux8,这样可以直接使用,避免自己安装CUDA。不过如果用户需要特定版本或者自定义安装,可能需要从Rocky Linux官方镜像开始,然后添加CUDA仓库,安装cuda-toolkit。
另外,用户可能需要验证CUDA是否正确安装,比如在容器中运行nvidia-smi或者编译一个示例程序。这可以确保GPU被正确识别和使用。
需要注意的坑点包括:确保宿主机已经安装了NVIDIA驱动,Docker配置正确,尤其是daemon.json中的runtime配置。引用[5]中提到修改daemon.json和SELinux设置,可能需要用户处理这些步骤。此外,SELinux可能会引起权限问题,可能需要临时禁用或配置策略。
最后,生成相关问题时要覆盖安装后的验证、离线情况、不同Linux发行版的差异以及常见错误的解决。用户可能后续会遇到驱动不兼容、容器无法访问GPU或者权限问题,所以相关问题需要引导他们进一步排查。</think>### 在Docker的Rocky Linux容器中配置CUDA的步骤
#### 1. **宿主机环境准备**
- 确保宿主机已安装NVIDIA驱动和Docker引擎:
```bash
# 检查NVIDIA驱动是否正常
nvidia-smi
# 安装Docker
sudo dnf install docker -y
sudo systemctl enable --now docker
```
#### 2. **安装NVIDIA Container Toolkit**
为Docker添加GPU支持,需先配置NVIDIA容器工具包:
```bash
# 添加NVIDIA容器仓库
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
# 安装nvidia-docker2
sudo dnf install -y nvidia-docker2
sudo systemctl restart docker # 重启Docker服务[^1]
```
#### 3. **验证NVIDIA容器工具包**
```bash
# 运行测试容器检查GPU是否可见
sudo docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubi8 nvidia-smi
```
若输出GPU信息,则配置成功[^4]。
---
#### 4. **构建Rocky Linux CUDA容器**
创建`Dockerfile`,选择官方CUDA镜像或手动安装:
```dockerfile
# 使用NVIDIA官方CUDA基础镜像(推荐)
FROM nvidia/cuda:12.2.2-base-rockylinux8
# 或从Rocky Linux镜像手动安装CUDA
# FROM rockylinux:8
# RUN dnf install -y https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo \
# && dnf install -y cuda-toolkit-12-2
```
构建并运行容器:
```bash
sudo docker build -t rocky-cuda .
sudo docker run --rm --gpus all rocky-cuda nvidia-smi
```
---
#### 5. **验证CUDA功能**
在容器内编译CUDA示例程序:
```bash
# 进入容器交互模式
sudo docker run -it --gpus all rocky-cuda /bin/bash
# 容器内操作
cat <<EOF > sample.cu
#include <stdio.h>
__global__ void hello() { printf("Hello CUDA\\n"); }
int main() { hello<<<1,1>>>(); cudaDeviceSynchronize(); return 0; }
EOF
# 编译并运行
nvcc sample.cu -o sample
./sample
```
若输出`Hello CUDA`,则CUDA环境正常[^3]。
---
###
阅读全文
相关推荐















