我想从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
答案 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
希望有帮助。