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

为何docker run可用GPU的RAPIDS镜像在docker-compose中无nvidia-smi?

问题分析与解决方案

1. Dockerfile可能覆盖了CUDA工具链路径

原rapidsai/rapidsai镜像已配置好CUDA相关环境变量,若你的Dockerfile中直接覆盖了PATH环境变量,会导致nvidia-smi所在的/usr/local/nvidia/bin路径被移除。

  • 解决方式:
    • 检查Dockerfile,避免直接覆盖PATH,添加新路径时用追加方式:ENV PATH="/新路径:${PATH}"
    • 或在Dockerfile中显式声明CUDA相关路径:
      ENV PATH="/usr/local/nvidia/bin:${PATH}"
      ENV LD_LIBRARY_PATH="/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}"
      

2. Docker Compose未配置GPU访问权限

直接用docker run时默认启用了GPU支持,但Docker Compose需要显式声明GPU资源,否则容器无法访问NVIDIA驱动组件,包括nvidia-smi。

  • 解决方式:在docker-compose.yml的服务节点中添加GPU配置:
    services:
      你的服务名:
        build: .
        deploy:
          resources:
            reservations:
              devices:
                - driver: nvidia
                  count: all # 可指定具体数量如1
                  capabilities: [gpu]
        # 若使用旧版Compose,也可使用以下配置(兼容性稍差)
        # runtime: nvidia
    

3. 自定义构建时误删CUDA相关依赖

如果Dockerfile中有apt-get remove、rm等清理操作,不小心删除了nvidia-utils或CUDA工具包组件,会导致nvidia-smi丢失。

  • 解决方式:检查Dockerfile中的清理步骤,避免删除CUDA相关依赖。如需清理,确保保留必要组件:
    RUN apt-get autoremove -y && apt-get clean -y \
        && rm -rf /var/lib/apt/lists/* \
        && rm -rf /tmp/*
    # 禁止执行 apt-get remove nvidia-* 这类操作
    

4. 未确认nvidia-docker运行时配置

虽直接运行原镜像正常,但需确保Docker已正确配置nvidia运行时:

  • 执行docker info | grep Runtimes,确认输出包含nvidia
  • 若未包含,重启Docker服务:sudo systemctl restart docker

内容的提问来源于stack exchange,提问作者Basanta shrestha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:33:21