40

I'm new to docker so I might be doing this wrong, but I'm trying to install Tomcat6 through a Dockerfile which like this:

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

Its failing on the 3rd line with the:

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

When I run the docker build I get this: this

I'm using:

  • Oracle Virtual Box V4.3.28 r100309
  • Docker on RHEL7
starball
  • 20,030
  • 7
  • 43
  • 238
user5201726
  • 542
  • 1
  • 5
  • 13
  • I came across this post looking for a solution to a `returned a non-zero code: 139` in a CentOS 7 server. I have solved my problem just uninstalling and reinstalling docker again. `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` – Wellington Souza Oct 26 '17 at 21:14
  • @WellingtonSouza error 139 means you're compiling for wrong CPU architecture – agilob Nov 06 '18 at 12:00

3 Answers3

24

Solution to the image with error is to add before the wget CMD RUN yum -y install wget

If you write it like this, it is the same result, just different execution:

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

Don't use the quotes and comma in RUN command.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Dharmit
  • 5,498
  • 2
  • 27
  • 30
  • It makes no difference to it, it still gives the same error – user5201726 Aug 07 '15 at 15:49
  • 3
    In that case, add the statement `RUN yum -y install wget` before the line that throws error. – Dharmit Aug 10 '15 at 06:57
  • Thanks, I'm after trying that, but it exits with code 1 now. This is what is displayed. http://i.imgur.com/wqmlenh.png I have a subscription with RedHat and I'm using it on the machine, do I have to do a subscription-manager login with Docker? – user5201726 Aug 10 '15 at 13:30
  • I've not used RHEL image since a while. But the message indicates that you need to register with Red Hat Subscription Manager. I'd suggest you to take Red Hat Support's help in this if you can. – Dharmit Aug 10 '15 at 15:51
19

Exit code 127 from shell commands means "command not found". So, in your case it seems the "wget" within quotes is not being found when Docker runs it.

In some cases, the command to install wget (or whatever command-line tool is missing) must first be run in the Dockerfile because some base Docker images will not have wget. You would add a line before the failing command that looks something like this:

RUN yum install -y wget
Rob Bailey
  • 1,747
  • 15
  • 18
4

Do not forget you can add all lib and package you need on the same line

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