如何用Ubuntu在Docker中坚持'ln'

Iva*_*del 6 python bash ubuntu opencv docker

我有一台Docker机器,我正在安装OpenCV 2.4.11

但是,发生了一个错误,我确实找到了解决方案,但这是暂时的.

当我运行我使用的Python脚本时cv2,抛出此错误消息:

Error: libdc1394 error: Failed to initialize libdc1394

我看到这是解决我的问题的唯一线程,但暂时: ctypes错误:libdc1394错误:无法初始化libdc1394

我向我添加了以下行Dockerfile,但这并没有影响我的VM.

RUN ln /dev/null /dev/raw1394

但是,如果我在VM运行时输入该命令(docker run -it ...),它确实使事情有效!但是,这并没有解决我的问题,因为我需要它在启动时没问题,如果我重新进入VM,问题就会回来.


我的Dockerfile:

# Pull base image.
FROM library/ubuntu

MAINTAINER Ivan Seidel <ivanseidel@gmail.com>

RUN apt-get update

#
# Python
#
RUN apt-get install -y python python-dev python-pip python-virtualenv

#
# Node.js and NPM
#
RUN apt-get install -y nodejs nodejs-legacy npm git --no-install-recommends

#
# Install OpenCV
#
RUN apt-get install -y python-opencv --no-install-recommends
RUN ln /dev/null /dev/raw1394

#
# Clear cache
#
RUN rm -rf /var/lib/apt/lists/*

#
# Specific data
# 
EXPOSE 80
COPY . /data
WORKDIR /data
RUN npm install --production

CMD ["bash"]
Run Code Online (Sandbox Code Playgroud)

Iva*_*del 5

好的.我花了整整一天时间.

基本上,之间的联系/dev/raw1394/dev/null是不是永久性的.你可以打电话到你的虚拟机,ln /dev/null /dev/raw1394但是它会持续到你重新启动你的容器.

我必须做的,似乎是最简单但不完美的方法是在Container启动期间放置链接.

我认为将它作为一项服务运行,但对于一项简单的工作似乎太过分了.

我最终开始工作的方式(它不漂亮,但有效),是通过改变CMDDockerfile:

CMD sh -c 'ln -s /dev/null /dev/raw1394'; <your-script-here>