gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:38:59 26 4
gpt4 key购买 nike

当我尝试在 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。这些不是同一个文件。如果您需要运行它,请使用具有可执行属性的文件的绝对路径。所以你的最后一行应该是:

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

'.' (dot) 代表您当前的当前工作目录。如果您不确定 cwd 是什么,建议始终使用绝对路径。

编辑

运行 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。

关于docker - 命令 '/bin/sh 返回一个非零代码 : 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43179863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com