web-dev-qa-db-fra.com

La commande '/ bin/sh -c a renvoyé un code différent de zéro: 127

Je suis nouveau sur docker, alors je peux ne pas le faire correctement, mais j'essaie d'installer Tomcat6 via une Dockerfile qui ressemble à ceci:

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 échec 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"

Lorsque je lance le docker, je reçois ceci: this

J'utilise:

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

Merci d'avance pour votre aide.

26
user5201726

La solution à l’image avec erreur consiste à ajouter avant le wget CMD RUN yum -y install wget

Si vous écrivez comme ça, c'est le même résultat, juste une exécution différente:

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

N'utilisez pas les guillemets et les virgules dans la commande RUN

13
Dharmit

Le code de sortie 127 des commandes du shell signifie "commande introuvable". Donc, dans votre cas, il semble que le "wget" entre guillemets ne soit pas trouvé lorsque 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 fichier Docker, car certaines images de base de Docker n'auront pas wget. Vous ajouteriez une ligne avant la commande défaillante qui ressemble à ceci:

RUN yum install -y wget
11
Rob Bailey

N'oubliez pas que vous pouvez ajouter toute la lib et le paquet 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/*

1
Amaury Van Espen