命令'/ 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。
- Docker –mount抛出:$ PATH中找不到可执行文件“
- 运行Docker镜像时出错。 不显示名为cv2,请求,boto3的模块
- Docker构builddockerfile
- Docker镜像环境variables的依赖关系
- 使用docker-compose增加docker大小
- 将USB Android设备从Windows 10主机安装到Docker容器
- 如何在生产阶段安排networking应用docker集装箱
- AWS Cloudwatch日志与Docker容器 – NoCredentialProviders:链中没有有效的提供者
- 用docker-compose创build的Docker从外部服务器不可见