Nvidia的docker – 不能findlibnvcuvid.sobuild设过程
我写了一个Dockerfile来构build我的QT应用程序,并且在编译时遇到了一些问题。
如果build命令在Dockerfile上,它会显示这个错误:
ninja: error: '/usr/lib/x86_64-linux-gnu/libnvcuvid.so', needed by 'bin/x64/release/*****/librtmpPlugin.so', missing and no known rule to make it
我添加了一个符号链接来解决临时容器上的这个错误:
ln -s /usr/local/nvidia/lib64/libnvcuvid.so.1 /usr/lib/x86_64-linux-gnu/libnvcuvid.so
但是,当我添加该行,并再次build立,我仍然有同样的错误。
首先,我认为这是因为一些悬挂图像的caching,但清理所有问题仍然存在。
这是我的一些ENV键:
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64 ENV LIBRARY_PATH /usr/local/cuda/lib64/stubs:${LIBRARY_PATH} ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} ENV OPENCL_HEADERS /usr/local/cuda/include ENV LIBOPENCL /usr/local/cuda/lib64 ENV CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda ENV CUDA_NVCC_EXECUTABLE /usr/bin/nvcc
这是我做的一些“黑客”,以消除其他错误:
RUN mv /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-inux-gnu/libOpenCL.so.1_old RUN ln -s /usr/local/cuda/lib64/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 RUN ln -s /usr/local/cuda-8.0/targets/x86_64-linux/lib/stubs/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so RUN ln -s /usr/local/cuda-8.0/targets/x86_64-linux/lib/stubs/libnvidia-ml.so /usr/lib/x86_64-linux-gnu/libnvidia-ml.so
我使用的是最新版本的Docker版本17.03.1-ce上的nvidia cuda 8映像+ nvidia docker。
我认为Dockerfile编译过程和容器运行时没有任何区别。
nvidia/cuda
的图像没有像我的软件构buildscheme所要求的那样与nvidia drivers
一起使用,所以我必须安装相当于nividia-smi
输出显示的驱动器。
apt-get install -y nvidia-381
我知道我将来可能会遇到一些问题,但现在就这样了。
我也必须重新命名libcuda.so
因为nvidia-381包有很多依赖关系,并且从CUDA包中删除了libcuda.so
,我开始收到很多警告。
RUN mv /usr/lib/x86_64-linux-gnu/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so_old RUN ln -s /usr/local/cuda-8.0/targets/x86_64-linux/lib/stubs/libcuda.so /usr/lib/x86_64-linux-gnu/libcuda.so
- 如何在Apache和Docker之后添加Tomcat
- 无法删除图像与儿童
- 如何使用docker-compose.yml文件命名卷?
- 有docker的API网关有什么select?
- dockerbuild设没有networking,但docker运行
- 如何在Google Container Engine(GKE)中代理泊坞窗registry?
- GitLab CIpipe道与多容器kubernetes吊舱
- Docker + WordPress – 得到这个错误“致命错误:未捕获错误:调用未定义的函数mysql_connect()”
- 在两个postgres数据库之间冲突,虽然有两个不同的docker – 为Django项目组成yaml文件