2015-08-07 1 views
21

Je suis nouveau sur docker, donc je vais peut-être mal faire, mais j'essaye d'installer Tomcat6 via un Dockerfile qui comme ceci:La commande '/ bin/sh -c a retourné un code différent de zéro: 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 

Son défaut sur la 3ème ligne avec le:

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

Quand je lance la construction docker je reçois ceci: this

J'utilise:

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

Merci à l'avance pour toute aide.

+0

Je suis tombé sur ce post à la recherche d'une solution à un 'renvoyé un code non-nul: 139' dans un serveur CentOS 7. J'ai résolu mon problème en désinstallant et en réinstallant docker à nouveau. 'sudo yum remove docker.x86_64 docker-common.x86_64 docker-distribution.x86_64 docker-RHEL-push-plugin.x86_64' ' sudo yum remove docker.x86_64 docker-common.x86_64 docker-distribution.x86_64 docker- rhel-push-plugin.x86_64' –

Répondre

9

Solution à l'image avec l'erreur est d'ajouter avant la wget CMD RUN yum -y install wget

Si vous écrivez comme ça, il est le même résultat, tout autre exécution:

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

Ne pas utiliser les citations et une virgule dans la commande RUN.

+0

Cela ne fait pas de différence, il donne toujours la même erreur – user5201726

+3

Dans ce cas, ajoutez l'instruction 'RUN yum -y install wget' avant la ligne qui déclenche l'erreur. – Dharmit

+0

Merci, je suis après avoir essayé, mais il se termine avec le code 1 maintenant. C'est ce qui est affiché. http://i.imgur.com/wqmlenh.png J'ai un abonnement avec RedHat et je l'utilise sur la machine, est-ce que je dois me connecter avec un gestionnaire d'abonnement avec Docker? – user5201726

7

Le code de sortie 127 des commandes shell signifie "commande non trouvée". Donc, dans votre cas, il semble que le "wget" entre guillemets ne soit pas trouvé quand Docker l'exécute.

Dans certains cas, la commande d'installation de wget (ou de tout outil de ligne de commande manquant) doit d'abord être exécutée dans le Dockerfile car certaines images Docker de base n'auront pas wget. Vous ajoutez une ligne avant la commande à défaut ressemble à ceci:

RUN yum install -y wget 
0

Ne pas oublier que vous pouvez ajouter tous lib et package dont vous avez besoin sur la même ligne

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