nvidia-docker 安装报错记录

本文详细记录了在CentOS环境下安装Docker和nvidia-docker的过程,特别关注了与CUDA版本匹配的问题。作者在安装nvidia-docker并运行测试命令时遇到错误,通过调整CUDA版本和使用正确的镜像文件解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近因为业务需要,很多服务要用docker部署,于是开始研究docker的使用。

代码是python,使用的深度学习框架为tensorflow,  按照官网说明,需要先安装 Docker 和 nvidia-docker。其中Docker的安装比较简单,基本就是参照了这篇文档:https://yeasy.gitbooks.io/docker_practice/install/centos.html

但是安装nvidia-docker时遇到了一些小坑,记录一下。

对于nvidia-docker的安装,基本是参照了官网的说明:https://github.com/NVIDIA/nvidia-docker

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo yum remove nvidia-docker

# Add the package repositories
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

# Install nvidia-docker2 and reload the Docker daemon configuration
sudo yum install -y nvidia-docker2
sudo pkill -SIGHUP dockerd

# Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

前面几个步骤还比较顺利,就是最后执行

docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

这个命令时,一直报错。

报错内容如下:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"process_linux.go:407: running prestart hook 1 caused \\\"error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig --device=all --compute --utility --require=cuda>=9.0 --pid=15997 /var/lib/docker/overlay2/5e678ed1c028293c3a8d9edc227307b89239e8c41672174811378c40e2dbbec9/merged]\\\\nnvidia-container-cli: requirement error: unsatisfied condition: cuda >= 9.0\\\\n\\\"\"": unknown.

仔细看最后一段“requirement error: unsatisfied condition: cuda >= 9.0” 猜测是cuda 版本问题。

查看本机cuda版本:

 cat /usr/local/cuda/version.txt

显示:CUDA Version 8.0.61

果然版本不行

于是修改上述命令:

docker run --runtime=nvidia --rm nvidia/cuda:8.0-base nvidia-smi

还是报错:

Unable to find image 'nvidia/cuda:8.0-base' locally
docker: Error response from daemon: manifest for nvidia/cuda:8.0-base not found.

应该是没有这个镜像文件

最后百度查到,正确的命令应该是:

docker run --runtime=nvidia --rm nvidia/cuda:8.0-devel nvidia-smi

成功显示:

Thu Feb 14 07:56:19 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P100-PCIE...  Off  | 0000:00:0C.0     Off |                    0 |
| N/A   42C    P0    28W / 250W |      0MiB / 16276MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

总结:测试命令也是要跟本机实际的cuda版本对应起来才行啊。

### 安装 NVIDIA-Docker 的前提条件 在 Linux 上安装 NVIDIA-Docker 需要满足一些基本的前提条件。目标主机应配备 Nvidia 显卡,并运行支持的操作系统,例如 Ubuntu 或其他 Debian 衍生版本[^3]。此外,在开始安装前需确认 DockerNvidia 显卡驱动已成功安装并正常工作[^2]。 --- ### 离线环境下的准备工作 对于无网络连接的 Linux 主机,可以按照以下方式准备所需的软件包: 1. **下载依赖项** 在有网络连接的机器上,获取所有必要的文件和依赖库。这些通常包括 `docker-ce`、`nvidia-container-toolkit` 及其相关组件。将它们复制到目标主机上的指定目录(如 `/opt/nvidia-docker2`)[^4]。 2. **创建本地仓库** 将下载好的 RPM 文件或 DEB 软件包放置于一个共享位置,并通过修改 YUM/DNF 或 APT 源配置来指向该路径。例如: ```bash mv repo/local.repo /etc/yum.repos.d/ ``` 3. **更新缓存** 更新系统的包管理器缓存以识别新添加的本地源。 ```bash yum makecache ``` --- ### 具体安装步骤 以下是基于 CentOS/RHEL 类似发行版的具体操作流程: #### 步骤一:安装 Docker CE 如果尚未完成 Docker安装,则需要手动执行此部分。假设已经准备好离线包,可以通过命令如下方式进行安装: ```bash yum install docker-ce systemctl enable --now docker ``` 验证服务状态是否正常启动: ```bash systemctl status docker ``` #### 步骤二:安装 nvidia-container-toolkit 同样利用预先传输至目标设备中的资源完成 toolkit 的部署过程: ```bash yum install nvidia-container-toolkit ``` 随后重新加载 Docker Daemon 并重启服务使其生效: ```bash systemctl restart docker ``` #### 步骤三:测试 GPU 支持情况 最后一步用于检验整个设置链路是否通畅有效。尝试拉取官方提供的示例镜像并运行简单的 CUDA 测试程序: ```bash docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi ``` 上述指令会展示当前可用 GPUs 列表及其性能参数等信息;如果没有报错则说明一切就绪! --- ### 注意事项 - 如果遇到任何错误提示,请仔细核对每阶段的日志记录找出潜在原因所在。 - 不同硬件架构可能会影响最终兼容性表现,请提前查阅对应手册资料加以甄别适配方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值