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

uelo1irk  于 2022-12-29  发布在  Docker
关注(0)|答案(3)|浏览(341)

我是新来的docker,所以我可能做错了,但我尝试通过Dockerfile安装Tomcat6,如下所示:

FROM rhel7:latest
RUN cd /tmp
RUN "wget", "http://www.us.apache.org/dist/tomcat/tomcat-6/v6.0.44/bin/apache-tomcat-6.0.44.tar.gz"
RUN tar xzf apache-tomcat-6.0.44.tar.gz
RUN mv apache-tomcat-6.0.44 /usr/local/tomcat6
RUN cd /usr/local/tomcat6
Run ./bin/start.sh

它在第3行失败,并显示:

RUN "wget", "http://www.us.apache.org/dist/tomcat/tomcat-6/v6.0.44/bin/apache-tomcat-6.0.44.tar.gz"

当我运行Docker构建时,我得到了以下结果:

我正在使用:

  • Oracle虚拟机箱V4.3.28 r100309
  • RHEL7上的对接器
c86crjj0

c86crjj01#

对于出现错误的图像,解决方法是在wget CMD RUN yum -y install wget之前添加
如果你这样写,结果是一样的,只是执行方式不同:

RUN wget http://www.us.apache.org/dist/tomcat/tomcat-6/v6.0.44/bin/apache-tomcat-6.0.44.tar.gz

不要在RUN命令中使用引号和逗号。

nhaq1z21

nhaq1z212#

退出代码127从 shell 命令意味着“命令找不到”。所以,在您的情况下,似乎“wget”引号内是找不到时,Docker运行它。
在某些情况下,安装wget的命令(或任何缺少的命令行工具)必须首先在Dockerfile中运行,因为某些基本Docker映像没有wget。您可以在失败的命令前添加一行,如下所示:

RUN yum install -y wget
h79rfbju

h79rfbju3#

别忘了你可以在同一行添加你需要的所有库和包

RUN cd /tmp \
&& apt-get update \
&& apt-get install -y curl apt-utils wget unzip\
&& rm -rf /var/lib/apt/lists/*

相关问题