You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker调用NVIDIA GPU报错:libnvidia-ml.so.1未找到(nvidia-smi正常)

Docker容器初始化失败:libnvidia-ml.so.1找不到(NVIDIA驱动525.85.12)

问题描述

Linux系统中,nvidia-smi可正常检测到NVIDIA驱动(版本525.85.12)及RTX A5000 GPU,但执行以下命令启动GPU支持的Docker容器时失败:

docker run --rm --gpus all ubuntu:18.04 nvidia-smi

错误信息

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy' nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.

系统GPU状态

nvidia-smi输出显示驱动与GPU运行正常:

$ nvidia-smi
Thu Feb 22 02:39:45 2024
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.12    Driver Version: 525.85.12    CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA RTX A5000    On   | 00000000:18:00.0 Off |                    0 |
| 30%   37C    P8    14W / 230W |  11671MiB / 23028MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA RTX A5000    On   | 00000000:86:00.0 Off |                    0 |
| 55%   80C    P2   211W / 230W |  13119MiB / 23028MiB |     79%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

已确认信息

执行nvidia-container-cli -k -d /dev/tty info可检测到系统中存在libnvidia-ml.so.525.85.12,但Docker容器初始化时仍提示找不到libnvidia-ml.so.1。

已尝试的解决方案(未生效)

  • 重装NVIDIA驱动与CUDA Toolkit
  • 重装NVIDIA Container Toolkit
  • 配置Docker与NVIDIA Container Toolkit
  • 设置LD_LIBRARY_PATH包含NVIDIA库路径

解决方案

1. 修复libnvidia-ml.so.1软链接

libnvidia-ml.so.1是指向具体版本库文件的软链接,若该链接缺失会导致容器无法找到库文件:

  1. 定位NVIDIA库目录:
    # 常见路径,若不存在可尝试/usr/lib64/
    cd /usr/lib/x86_64-linux-gnu/
    
  2. 查看现有软链接:
    ls -l libnvidia-ml.so.*
    
  3. 若libnvidia-ml.so.1未指向libnvidia-ml.so.525.85.12,手动创建:
    sudo ln -s libnvidia-ml.so.525.85.12 libnvidia-ml.so.1
    

2. 验证Docker Daemon配置

确保Docker已配置NVIDIA runtime为默认选项:

  1. 编辑/etc/docker/daemon.json(若不存在则创建):
    {
      "runtimes": {
        "nvidia": {
          "path": "nvidia-container-runtime",
          "runtimeArgs": []
        }
      },
      "default-runtime": "nvidia"
    }
    
  2. 重启Docker服务:
    sudo systemctl restart docker
    

3. 检查nvidia-container-runtime配置

确认nvidia-container-runtime的hook配置正确:

  1. 编辑/etc/nvidia-container-runtime/config.toml:
    [nvidia-container-cli]
    no-cgroups = false
    ldconfig = "/sbin/ldconfig"
    
    确保ldconfig路径与系统实际路径一致(可通过which ldconfig确认)。
  2. 重启Docker服务。

4. 使用NVIDIA官方基础镜像

尝试使用NVIDIA提供的预配置CUDA基础镜像,排除Ubuntu基础镜像的依赖缺失问题:

docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu18.04 nvidia-smi

5. 排查安全机制影响

若系统启用了SELinux或AppArmor,可能会阻止容器访问主机库文件:

  • SELinux临时测试:
    sudo setenforce 0
    
    重新运行容器命令,若恢复正常,需配置SELinux规则允许NVIDIA容器访问相关文件。
  • AppArmor临时测试:
    sudo aa-teardown
    
    测试后若正常,需调整AppArmor配置或添加容器的豁免规则。

内容的提问来源于stack exchange,提问作者Sik So

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:31:13