it-swarm.com.de

Der Befehl '/ bin/sh -c hat einen Code ungleich Null zurückgegeben: 127

Ich bin neu im Docker, also mache ich das vielleicht falsch, aber ich versuche, Tomcat6 über eine Dockerfile zu installieren, die so aussieht:

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

Es versagt in der dritten Zeile mit der: 

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

Wenn ich den Docker-Build starte, bekomme ich Folgendes: this

Ich benutze:

  • Oracle Virtual Box V4.3.28 r100309
  • Docker auf RHEL7

Vielen Dank im Voraus für jede Hilfe.

26
user5201726

Lösung für das Bild mit Fehler ist das Hinzufügen vor dem wget CMD RUN yum -y install wget

Wenn Sie es so schreiben, ist es das gleiche Ergebnis, nur eine andere Ausführung:

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

Verwenden Sie keine Anführungszeichen und Kommas im Befehl RUN

13
Dharmit

Exitcode 127 von Shell-Befehlen bedeutet "Befehl nicht gefunden". In Ihrem Fall scheint es also so, als ob das "wget" in Anführungszeichen nicht gefunden wird, wenn es von Docker ausgeführt wird. 

In einigen Fällen muss der Befehl zum Installieren von wget (oder was auch immer das Befehlszeilenprogramm fehlt) zuerst in der Docker-Datei ausgeführt werden, da einige Basis-Docker-Images kein Wget haben. Sie fügen vor dem fehlgeschlagenen Befehl eine Zeile hinzu, die etwa wie folgt aussieht:

RUN yum install -y wget
11
Rob Bailey

Vergessen Sie nicht, dass Sie alle Bibliotheken und Pakete hinzufügen können, die Sie in derselben Zeile benötigen

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

1