“dockerfile”文本文件忙

时间:2016-11-23 12:51:41

标签: docker makefile dockerfile

我想从dockerfile创建一个项目。首先,我应该从github克隆一个框架并安装它。 在我的Dockerfile中,我有以下指示:

RUN git clone https://github.com/simgrid/project.git
WORKDIR "/project"
RUN cmake option1 options2 .
RUN sudo make
RUN sudo make install 

我用以下方式构建图像:

docker build -t "myimage" . 

但我对text file busy有错误。我怎样才能克服它?

    make[2]: execvp: /simgrid/tools/sg_unit_extractor.pl: Text file busy
    make[2]: *** [src/cunit_unit.cpp] Error 127
    CMakeFiles/testall.dir/build.make:69: recipe for target 'src/cunit_unit.cpp' failed
    CMakeFiles/Makefile2:616: recipe for target 'CMakeFiles/testall.dir/all' failed
    make[1]: *** [CMakeFiles/testall.dir/all] Error 2
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2
    The command '/bin/sh -c sudo make' returned a non-zero code: 2

我的Dockerfile内容是:

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y \
            sudo \
            git \
            build-essential \ 
            cmake \
            libboost-dev \
            libboost-all-dev \
            doxygen \
            python3
RUN git clone https://github.com/simgrid/simgrid.git
WORKDIR "/simgrid"
RUN cmake -Denable_documentation=OFF -Denable_coverage=OFF -Denable_java=OFF -Denable_model-checking=OFF \
    -Denable_lua=OFF -Denable_compile_optimizations=OFF -Denable_smpi=OFF -Denable_smpi_MPICH3_testsuite=OFF -Denable_compile_warnings=OFF .
RUN sudo make 
RUN sudo make install

2 个答案:

答案 0 :(得分:3)

您看到的错误消息来自make的输出。它似乎不是Docker的错误。相反,这指向在图像中编译的代码,因此您可能希望在github中使用它们引发此问题。

我确实看到有很多内核和网络组件正在使用app编译,这可能无法在docker沙箱中正常运行,因此您尝试编译的代码可能无法在此类隔离中运行没有禁用docker提供的一些保护措施。有关详细信息,请参阅docker's security documentation,特别是有关保护内核的命名空间,cgroup和功能的信息。

答案 1 :(得分:0)

尽管这不是Docker问题,但在某些情况下,构建dockerfile时可能会遇到此错误。 只是为了带来一种已知的解决方法(即使它不是最优雅的解决方案),我还是向您展示这个方法。

在我的情况下,尝试使用以下行构建Dockerfile时收到消息“ Text file busy”:

RUN chmod 500 /build/build_dotcms.sh && /build/build_dotcms.sh ${BUILD_FROM} ${BUILD_ID}

间歇性地引起“文本文件忙”中断。

解决方法是在chmod命令和shell脚本执行之间添加“ sleep 1”

RUN chmod 500 /build/build_dotcms.sh && sleep 1 && /build/build_dotcms.sh ${BUILD_FROM} ${BUILD_ID}

我在github线程中找到了解决方案:https://github.com/moby/moby/issues/9547

希望有帮助。