Download failure within official ubuntu docker images on Ubuntu 14.04 host
It is not a DNS problem. It’s working fine. I’m not behind a proxy. I get the network connection, but can’t download the files. Always get
404: file not found, but the url is correct.
Finally Tried the following Dockerfile to prove my point:
FROM ubuntu ADD 'http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz' / COPY wget /usr/bin/ COPY ping /bin/ COPY libidn.so.11 /usr/lib/x86_64-linux-gnu/ RUN ping -c 4 ftp.unicamp.br RUN wget http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz RUN tar zxf apache-tomcat-7.0.62.tar.gz
Ran the command
docker build --no-cache=true -t raoni/tomcat:0.1 .
And got the following output:
Sending build context to Docker daemon 1.885 MB Sending build context to Docker daemon Step 0 : FROM ubuntu ---> 6d4946999d4f Step 1 : ADD http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz / Downloading [==================================================>] 8.825 MB/8.825 MB ---> 6d13d9232ebb Removing intermediate container a3c80c01a112 Step 2 : COPY wget /usr/bin/ ---> ba1d72d7b503 Removing intermediate container c004c20c396e Step 3 : COPY ping /bin/ ---> 59fb0419c477 Removing intermediate container c2f3d5035458 Step 4 : COPY libidn.so.11 /usr/lib/x86_64-linux-gnu/ ---> 66cf1b0c13cc Removing intermediate container 3dccacf5c992 Step 5 : RUN ping -c 4 ftp.unicamp.br ---> Running in 62bbdda28ef6 PING ftp.unicamp.br (126.96.36.199) 56(84) bytes of data. 64 bytes from ftp.unicamp.br (188.8.131.52): icmp_seq=1 ttl=52 time=31.6 ms 64 bytes from ftp.unicamp.br (184.108.40.206): icmp_seq=2 ttl=52 time=31.7 ms 64 bytes from ftp.unicamp.br (220.127.116.11): icmp_seq=3 ttl=52 time=31.8 ms 64 bytes from ftp.unicamp.br (18.104.22.168): icmp_seq=4 ttl=52 time=32.0 ms --- ftp.unicamp.br ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 31.609/31.818/32.067/0.211 ms ---> cffab8d12f25 Removing intermediate container 62bbdda28ef6 Step 6 : RUN wget http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz ---> Running in c38cf1dfb7a9 --2015-06-23 22:36:17-- http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz Resolving ftp.unicamp.br (ftp.unicamp.br)... 22.214.171.124 Connecting to ftp.unicamp.br (ftp.unicamp.br)|126.96.36.199|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2015-06-23 22:36:17 ERROR 404: Not Found. The command '/bin/sh -c wget http://ftp.unicamp.br/pub/apache/tomcat/tomcat-7/v7.0.62/bin/apache-tomcat-7.0.62.tar.gz' returned a non-zero code: 8
This output shows that:
- The url is valid and accessible. The ADD command was able to download the file successfully.
- The network connection in the container is OK, since it is able to ping the remote host.
- The container is able to resolve the DNS name.
Apt-get update shows the exact same problem, as in the following excerpt output from the command
docker run ubuntu:12.04 apt-get update:
Err http://archive.ubuntu.com precise/main Sources 404 Not Found [IP: 188.8.131.52 80] Err http://archive.ubuntu.com precise/restricted Sources 404 Not Found [IP: 184.108.40.206 80] Err http://archive.ubuntu.com precise/universe Sources 404 Not Found [IP: 220.127.116.11 80] Err http://archive.ubuntu.com precise/universe amd64 Packages 404 Not Found [IP: 18.104.22.168 80]
For information, the
docker version command output shows:
root@vm:~/docker/test# docker version Client version: 1.7.0 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 0baf609 OS/Arch (client): linux/amd64 Server version: 1.7.0 Server API version: 1.19 Go version (server): go1.4.2 Git commit (server): 0baf609 OS/Arch (server): linux/amd64
Thanks in advance.
Ufw was inactive. Thanks Thomas.
It was a network IPS behaving oddly at the edge. Network support fixed and it is now working OK.
One Solution collect form web for “Download failure within official ubuntu docker images on Ubuntu 14.04 host”
There is an important difference to understand when
docker build executes a
ADD instruction and when it executes a
- with the
ADDinstruction, the download takes place from the docker host and then is pushed into the build context.
- with the
RUNinstruction, the download takes place from within a running container.
This difference can explain why it works with one and fails with the other.
Since your host is Ubuntu, make sure you followed the Docker installation instructions regarding the ufw firewall which says:
If you use UFW (Uncomplicated Firewall) on the same host as you run Docker, you’ll need to do additional configuration. Docker uses a bridge to manage container networking. By default, UFW drops all forwarding traffic. As a result, for Docker to run when UFW is enabled, you must set UFW’s forwarding policy appropriately.
Also if you want to investigate from within a container the issue and easily try out commands to figure the problem out, I suggest you open a bash shell in a container created from that same
docker run -it ubuntu /bin/bash -l
and from there you will be able to diagnose the issue, for instance with:
route cat /etc/resolv.conf apt-get update && apt-get -y install traceroute telnet traceroute ftp.unicamp.br telnet ftp.unicamp.br 80