使用NVIDIA运行时运行Docker合成时出现OCI运行时错误,但未使用Docker运行时出现该错误

oprakyz7  于 2023-03-01  发布在  Docker
关注(0)|答案(1)|浏览(319)

我是Stackoverflow和NVIDIA运行时的新手,我尝试使用Docker Compose在NVIDIA运行时运行Docker容器。但是,我遇到了一个错误,而直接使用Docker run运行容器时不会遇到这个错误。
下面是我的docker-compose.yml文件的相关部分:

services:
  nvidia-test:
    image: nvidia/cuda:11.5.2-base-ubuntu20.04
    command: nvidia-smi
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]

当我运行docker-compose up时,我得到了以下错误:
守护程序的错误响应:无法创建填充程序任务:OCI运行时创建失败:runc创建失败:无法启动容器进程:容器初始化期间出错:运行挂接#0时出错:运行挂接时出错:退出状态1,标准输出:,stderr:自动检测模式为"传统" nvidia-container-cli:初始化错误:加载库失败:libnvidia-ml.因此,1:无法打开共享目标文件:没有这样的文件或目录:未知
然而,当我直接使用docker run命令运行容器时,如下所示,我没有得到这个/任何错误:

sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.5.2-base-ubuntu20.04 nvidia-smi

我不确定导致此错误的原因。有人能帮助我了解此问题以及如何解决它,以便我可以使用Docker Compose运行带有NVIDIA运行时的容器吗?目前我使用的是Docker Compose版本v2.16.0,并且我已通过此链接安装了NVIDIA-Container-Toolkit。以下是我的计算机上安装的NVIDIA驱动程序和CUDA版本:
GPU Specs
如果您需要我提供更多信息以更好地了解该问题,请告知我。
我已经sudo systemctl status nvidia-persistenced检查了持久性守护进程。但是它是活动的(正在运行)。

ulydmbyx

ulydmbyx1#

docker-compose up前面添加sudo解决了这个问题。我假设需要提升权限才能允许Docker正确访问必要的NVIDIA工具和库。与sudo docker run ...相同。另外,请注意,对于较新的nvidia-container-toolkit版本,不再需要sudo docker run ...中的--runtime=nvidia

相关问题