命令'/ bin / sh返回一个非零的代码:1

当我尝试在Ubuntu Docker容器中手动安装bin文件时,

./MyBinfile.bin 

但是,当我从我的Dockerfile中尝试它时,我总是得到错误:命令'/ bin / sh -c chmod + x /tmp/snapcenter_linux_host_plugin.bin && ./tmp/MyBinFile.bin'返回非零代码:1

我的Dockerfile看起来像:

  FROM debian:jessie RUN apt-get update && apt-get install -y openjdk-7-jdk ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 RUN echo $JAVA_HOME COPY MyBinFile.bin /tmp/MyBinFile.bin RUN chmod +x /tmp/MyBinFile.bin && ./tmp/MyBinFile.bin 

任何人都可以帮助我在这种情况下?

您将MyBinFile.bin复制到/tmp/MyBinFile.bin。 这些不是同一个文件。 如果需要运行它,则使用具有可执行属性的文件的绝对path。 所以你的最后一行应该是:

 RUN chmod +x /tmp/MyBinFile.bin && /tmp/MyBinFile.bin 

'' (点)代表你当前的工作目录。 如果您不确定您的密码是什么,build议您始终使用绝对path。

编辑

运行你的Dockerfile产生下面的输出:

 Sending build context to Docker daemon 3.584 kB Step 1/6 : FROM debian:jessie ---> 8cedef9d7368 Step 2/6 : RUN apt-get update && apt-get install -y openjdk-7-jdk ---> Using cache ---> 1a0005923f41 Step 3/6 : ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 ---> Using cache ---> 5651d50b519e Step 4/6 : RUN echo $JAVA_HOME ---> Using cache ---> 96655235a2cf Step 5/6 : COPY MyBinFile.bin /tmp/MyBinFile.bin ---> 60c79aaf5aca Removing intermediate container cd729c315e9b Step 6/6 : RUN chmod +x /tmp/MyBinFile.bin && /tmp/MyBinFile.bin ---> Running in 5db126cbd24c /bin/sh: 1: /tmp/MyBinFile.bin: Text file busy The command '/bin/sh -c chmod +x /tmp/MyBinFile.bin && /tmp/MyBinFile.bin' returned a non-zero code: 2 

但是如果我把最后一步分成两个不同的步骤:

 FROM debian:jessie RUN apt-get update && apt-get install -y openjdk-7-jdk ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 RUN echo $JAVA_HOME COPY MyBinFile.bin /tmp/MyBinFile.bin RUN chmod +x /tmp/MyBinFile.bin RUN /tmp/MyBinFile.bin 

那么它执行OK。