【问题标题】:Docker build fails with "RUN: command not found"Docker 构建失败并显示“RUN: command not found”
【发布时间】:2019-07-01 00:55:52
【问题描述】:

我在 dockerfile 中的内容下方运行它一直运行到 yum 安装并失败为 /bin/sh: RUN: command not found

Docker 文件:

FROM amazonlinux:latest
ADD . /tmp/
RUN yum install gzip -y && \
    yum install tar -y && \
    yum install libstdc++.so.6 -y && \
RUN cd /tmp && /usr/bin/gunzip TeradataToolsAndUtilitiesBase__linux_indep.16.20.10.00.tar.gz && /usr/bin/tar -xvf TeradataToolsAndUtilitiesBase__linux_indep.16.20.10.00.tar 
RUN cd /tmp/TeradataToolsAndUtilitiesBase/ && ./setup.bat a
CMD ["/bin/bash"]

错误:

Installed:
  libstdc++.i686 0:7.3.1-5.amzn2.0.2                                            

Dependency Installed:
  glibc.i686 0:2.26-32.amzn2.0.1         libgcc.i686 0:7.3.1-5.amzn2.0.2        

Complete!
/bin/sh: RUN: command not found
The command '/bin/sh -c yum install gzip -y &&     yum install tar -y &&     yum install libstdc++.so.6 -y && RUN cd /tmp && /usr/bin/gunzip TeradataToolsAndUtilitiesBase__linux_indep.16.20.10.00.tar.gz && /usr/bin/tar -xvf TeradataToolsAndUtilitiesBase__linux_indep.16.20.10.00.tar' returned a non-zero code: 127
system:ttudockerimg$

请帮忙。

【问题讨论】:

  • RUN cd /tmp 被作为前面的RUN 命令的一部分,因为它前面的行以反斜杠结尾。
  • 删除第一个 RUN 命令第 3 行的尾部反斜杠。

标签: linux docker dockerfile


【解决方案1】:

只需使用一个 RUN 命令,然后转义换行符。如果您有多个命令,则必须将它们包装在 bash 命令中。

除此之外,您可以直接从.tar.gz 文件中提取,而无需先解压缩。

FROM amazonlinux:latest 
ADD . /tmp/ 
RUN yum install gzip -y && \ 
    yum install tar -y && \ 
    yum install libstdc++.so.6 -y && \
    /bin/bash -c 'cd /tmp && \
    /usr/bin/tar -xzvf TeradataToolsAndUtilitiesBase__linux_indep.16.20.10.00.tar.gz && \
    cd /tmp/TeradataToolsAndUtilitiesBase/ && \
    ./setup.bat a 
CMD ["/bin/bash"]

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 2022-12-10
    • 1970-01-01
    • 2022-12-25
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多