Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止nvidia docker使用debian软件包安装nvidia驱动程序_Docker_Driver_Nvidia_Nvidia Docker - Fatal编程技术网

阻止nvidia docker使用debian软件包安装nvidia驱动程序

阻止nvidia docker使用debian软件包安装nvidia驱动程序,docker,driver,nvidia,nvidia-docker,Docker,Driver,Nvidia,Nvidia Docker,我正在尝试创建一个nvidia docker映像,并为我的特定应用程序安装了TensorRT。我不能使用任何提供的TensorRT基本映像,因为它们使用的是与应用程序不兼容的CUDA版本,但我有一个自定义的TensorRT debian包,在我的组织中使用。问题是,当我从Dockerfile安装它时,它也会安装nvidia驱动程序。因此,容器已成功创建,但无法启动-结果是: svc_moma_usr@PL1LXD-529389:~/gutkowsp/Docker_projects/test_cu

我正在尝试创建一个nvidia docker映像,并为我的特定应用程序安装了TensorRT。我不能使用任何提供的TensorRT基本映像,因为它们使用的是与应用程序不兼容的CUDA版本,但我有一个自定义的TensorRT debian包,在我的组织中使用。问题是,当我从Dockerfile安装它时,它也会安装nvidia驱动程序。因此,容器已成功创建,但无法启动-结果是:

svc_moma_usr@PL1LXD-529389:~/gutkowsp/Docker_projects/test_cuda$ nvidia-docker run tensorrt-test
docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "process_linux.go:449: container init caused \"process_linux.go:432: running prestart hook 1 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: mount error: file creation failed: /var/lib/docker/overlay2/97f449ff2535b1ad304520dae75c613931888658a66b89235b0d040a872a625c/merged/usr/bin/nvidia-smi: file exists\\\\n\\\"\"": unknown.
ERRO[0001] error waiting for container: context canceled
dockerfile是:

FROM nvidia/cuda:9.1-devel-ubuntu16.04

ENV DEBIAN_FRONTEND noninteractive
ENV CUDNN_VERSION 7.0.5.15
LABEL com.nvidia.cudnn.version="${CUDNN_VERSION}"

RUN apt update -y && \
    apt install software-properties-common -y && \
    apt-add-repository --yes --update ppa:ansible/ansible && \
    apt install ansible -y

RUN apt update -y && \
    apt install -y --no-install-recommends \
    libcudnn7=$CUDNN_VERSION-1+cuda9.1 \
    libcudnn7-dev=$CUDNN_VERSION-1+cuda9.1

RUN apt update -y && \
    apt install tensorrt -y

如何解决不必要司机的问题?在我看来,这似乎是一个常见的问题,因为通常nvidia docker映像通常安装了nvidia软件,该软件通常附带驱动程序。也许有人可以共享TensorRT图像的dockerfiles以供参考

在所有其他apt安装之前,您是否尝试过运行apt安装?安装系统可能会看到您已经满足了拥有某种nvidia驱动程序的先决条件,而不是替换它。或者是nvidia/cuda:9.1-devel-ubuntu16.04中您不需要的驱动程序?不,在其他安装之前,我没有检查安装驱动程序。但我不确定这会有什么帮助。我根本不想安装nvidia驱动程序,因为如果安装了,系统将不会使用主机驱动程序。这不是关于替换容器中的驱动程序。当我使用普通docker(不是nvidia docker)隔离加密货币GPU miner时,我发现docker容器需要一个nvidia驱动程序。细节。我似乎记得,在这种配置中,主机和容器都需要驱动程序。主机需要它,以便主机上存在
/dev/nvid*
文件并可以将其转发到容器。我不知道为什么集装箱需要它,但它确实需要。当然,这可能会忽略nvidia docker为您处理的其他事情,但要早得多。而且,为了回答您之前的问题,预安装驱动程序是否有帮助取决于内部软件包的设置方式。如果内部包使用一个虚拟prereq,该虚拟prereq可以由多个可选的实际包来满足,那么预安装非常有用,并且将满足虚拟prereq。Linux包有时使用显式的先决条件,有时使用“虚拟”先决条件。虚拟预请求可以通过各种备选方案来满足。一个常见的用例要求用户拥有一些文本编辑器或web浏览器,但不需要特定的编辑器。