2016-11-23 3 views
1

Я хочу создать проект из файла dockerfile. Во-первых, я должен клонировать структуру из github и устанавливать ее. В моих Dockerfile У меня есть следующие instrutions:"dockerfile" text file busy

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 

содержание My 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

Пожалуйста, включите достаточно подробностей, чтобы воспроизвести вашу проблему. Например. полный файл Docker и действительный публичный репозиторий git. – BMitch

+0

@BMitch Здесь мой dockerfile https://github.com/kenenbek/travisci/blob/master/Dockerfile –

+1

Пожалуйста, * не * ссылку на внешний ресурс (в вашем случае, файл Docker). Вместо этого разместите * полный минимальный * пример (см. Также [MCVE]). –

ответ

3

сообщение об ошибке вы видите, с выходом производства. Это не ошибка для Docker. Вместо этого это указывает на код, скомпилированный внутри изображения, и поэтому вы хотите поднять эту проблему с ними в github.

Я вижу значительное количество компонентов ядра и сети, скомпилированных с помощью приложения, которые могут неправильно функционировать в песочнице докеров, поэтому код, который вы пытаетесь скомпилировать, может не работать в этом типе без отключения некоторых защит, которые обеспечивает докер. См. docker's security documentation для получения дополнительной информации, особенно о пространствах имен, группах и возможностях защиты ядра.

+0

Иногда я вижу эту ошибку, а иногда я не создаю изображение. Это очень странно. Вы получили эту ошибку? –

+0

Ошибка произошла в моей среде. – BMitch

+0

Я не получил ошибку, выполняемую make изнутри контейнера (оставив cmake в качестве последней инструкции в файле Docker). В зависимости от вашей потребности вы можете зафиксировать изображение после этого, даже если это абсолютно не чистая практика. – gile