2015-08-07 20 views
21

Ich bin neu in Docker, also könnte ich das falsch machen, aber ich versuche, Tomcat6 über eine Dockerfile zu installieren, die wie folgt lautet:Der Befehl '/ bin/sh -c gab einen Code ungleich Null zurück: 127

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 liegt auf der 3. Zeile andernfalls mit dem:

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

Wenn ich die docker Build laufen bekomme ich diese: this

ich verwende:

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

Vielen Dank im Voraus für jede Hilfe.

+0

auf der gleichen Linie brauchen Ich bin auf diesen Post gestoßen, auf der Suche nach einer Lösung für einen 'zurückgegebenen Nicht-Null-Code: 139' auf einem CentOS 7-Server. Ich habe mein Problem gelöst, indem ich den Docker wieder deinstalliert und neu installiert habe. 'sudo yum docker.x86_64 Docker-common.x86_64 Docker-distribution.x86_64 Docker-rhel-Push-plugin.x86_64' ' sudo yum entfernen docker.x86_64 Docker-common.x86_64 Docker-distribution.x86_64 entfernen docker- rhel-push-plugin.x86_64' –

Antwort

9

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

hinzufügen Wenn Sie es so schreiben, ist es das gleiche Ergebnis, nur anders Ausführung:

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

nicht die Anführungszeichen verwenden Sie und Komma in RUN Befehl.

+0

Es macht keinen Unterschied, es gibt immer noch den gleichen Fehler – user5201726

+3

In diesem Fall fügen Sie die Anweisung "RUN yum -y install wget" vor der Zeile, die Fehler wirft. – Dharmit

+0

Danke, ich versuche es, aber es wird jetzt mit Code 1 beendet. Dies wird angezeigt. http://i.imgur.com/wqmlenh.png Ich habe ein Abonnement mit RedHat und ich benutze es auf dem Rechner. Muss ich mich mit Docker einloggen? – user5201726

7

Exit-Code 127 von Shell-Befehlen bedeutet "Befehl nicht gefunden". In Ihrem Fall scheint das "wget" in Anführungszeichen nicht gefunden zu werden, wenn Docker es ausführt.

In einigen Fällen muss der Befehl zur Installation von wget (oder eines anderen Befehlszeilenprogramms) zuerst in der Dockerdatei ausgeführt werden, da einige Basis-Docker-Images nicht über wget verfügen. Sie würden eine Zeile vor dem fehlerhaften Befehl hinzufügen, die etwa wie folgt aussieht:

RUN yum install -y wget 
0

Vergessen Sie nicht, Sie alle lib hinzufügen und Paket, das Sie

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