Dockerfile构buildRUN cmd失败,但从交互式工作

我遇到了一个问题,即在“make”命令下构buildDockerfile失败,但是如果我运行了容器并重新创build成功。 特别是make命令似乎没有看到一个文件:

make[2]: *** No rule to make target /usr/local/nvidia/lib64/libcuda.so, needed by bin/gpu-example-alpha_comp. Stop. 

但是这是基于nvidia / cuda:8.0-cudnn5-devel和libcuda.so在那里,即如果我运行 – 容器:

 root@cf5637b85467:/opt/opencv/opencv/build# ll /usr/local/nvidia/lib64/libcuda*.* lrwxrwxrwx 1 999 999 17 Nov 21 20:42 /usr/local/nvidia/lib64/libcuda.so -> libcuda.so.370.28 lrwxrwxrwx 1 999 999 17 Nov 21 20:42 /usr/local/nvidia/lib64/libcuda.so.1 -> libcuda.so.370.28 -rw-r--r-- 2 root root 8219624 Sep 2 02:25 /usr/local/nvidia/lib64/libcuda.so.370.28 

并完成没有问题,如果我手动运行它(我尝试从/ bin / bash和/ bin / sh运行)。

我唯一能看到的是.so链接的用户和组999,但我不知道这是否相关。 在最糟糕的情况下,我可以在build设之后做出承诺,但这似乎是一个不好的方法。 有什么build议么? 下面是完整的Dockerfile:

 FROM nvidia/cuda:8.0-cudnn5-devel RUN apt-get update &&\ apt-get install -y --no-install-recommends \ build-essential \ cmake \ curl \ gfortran \ git \ libatlas-base-dev \ libavcodec-dev \ libavformat-dev \ libfreetype6-dev \ libgtk2.0-dev \ libjasper-dev \ libjpeg8-dev \ libpng12-dev \ libswscale-dev \ libtiff4-dev \ libv4l-dev \ pkg-config \ python2.7-dev \ && \ apt-get clean && \ apt-get autoremove && \ rm -rf /var/lib/apt/lists/* # Get pip and pip installs RUN curl -O https://bootstrap.pypa.io/get-pip.py && \ python get-pip.py && \ rm get-pip.py RUN pip --no-cache-dir --timeout=60 install \ numpy # Install opencv and opencv_contrib WORKDIR /opt/opencv RUN git clone --depth 1 https://github.com/opencv/opencv.git && \ git clone --depth 1 https://github.com/opencv/opencv_contrib.git WORKDIR /opt/opencv/opencv/build RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=/opt/opencv/opencv_contrib/modules \ -D CUDA_CUDA_LIBRARY=/usr/local/nvidia/lib64/libcuda.so \ -D BUILD_EXAMPLES=ON .. RUN make -j8 RUN make install