Docker Community Forums

Share and learn in the Docker community.

Proxy Issues with docker build?

Hello,

Docker Guest OS:

root@srv-lx-k8s-worker-01:~/Dockerfiles# cat /etc/issue
Ubuntu 18.04.4 LTS \n \l

Docker Version:

root@srv-lx-k8s-worker-01:~/Dockerfiles# docker version
Client:
 Version:           18.09.7
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        2d0083d
 Built:             Thu Jun 27 17:56:23 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       2d0083d
  Built:            Thu Jun 27 17:23:02 2019
  OS/Arch:          linux/amd64
  Experimental:     false

Just doing a basic docker build.

Here’s my Dockerfile3:

root@srv-lx-k8s-worker-01:~/Dockerfiles# cat Dockerfile3 
from    dadiaspe-custom-image-2
run     apt-get -y update
run     apt-get install nano

Here’s the command I’m executing:

root@srv-lx-k8s-worker-01:~/Dockerfiles# docker build -t dadiaspe-custom-image-3 -f Dockerfile3 .
Sending build context to Docker daemon  3.072kB
Step 1/3 : from dadiaspe-custom-image-2
 ---> 57af988bf58a
Step 2/3 : run  apt-get -y update
 ---> Running in 56d1a97deb30
Ign http://archive.ubuntu.com trusty InRelease
Get:1 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB]
Get:2 http://archive.ubuntu.com trusty-backports InRelease [65.9 kB]
Hit http://archive.ubuntu.com trusty Release.gpg
Get:3 http://archive.ubuntu.com trusty-updates/main amd64 Packages [1460 kB]
.
.
.
Ign https://esm.ubuntu.com trusty-infra-updates Release.gpg
Ign https://esm.ubuntu.com trusty-infra-security Release
Ign https://esm.ubuntu.com trusty-infra-updates Release
Err https://esm.ubuntu.com trusty-infra-security/main amd64 Packages
  Failed to connect to esm.ubuntu.com port 443: Connection timed out
Err https://esm.ubuntu.com trusty-infra-updates/main amd64 Packages
  Failed to connect to esm.ubuntu.com port 443: Connection timed out
Fetched 13.4 MB in 30min 2s (7425 B/s)
W: Failed to fetch https://esm.ubuntu.com/ubuntu/dists/trusty-infra-security/main/binary-amd64/Packages  Failed to connect to esm.ubuntu.com port 443: Connection timed out

W: Failed to fetch https://esm.ubuntu.com/ubuntu/dists/trusty-infra-updates/main/binary-amd64/Packages  Failed to connect to esm.ubuntu.com port 443: Connection timed out

E: Some index files failed to download. They have been ignored, or old ones used instead.
The command '/bin/sh -c apt-get -y update' returned a non-zero code: 100

If I run apt-get update -y from the Guest OS command line, no issues:

root@srv-lx-k8s-worker-01:~/Dockerfiles# apt-get -y update
Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 https://download.docker.com/linux/ubuntu bionic InRelease                                      
Get:3 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Fetched 252 kB in 1s (316 kB/s)     
Reading package lists... Done
root@srv-lx-k8s-worker-01:~/Dockerfiles# 

I’m behind a proxy. Here’s my settings for Proxy:

root@srv-lx-k8s-worker-01:~/Dockerfiles# cat /etc/profile.d/proxy.sh
# set proxy config via profie.d - should apply for all users
# 
export http_proxy="http://192.168.1.35:3128/"
export https_proxy="http://192.168.1.35:3128/"
export ftp_proxy="http://192.168.1.35:3128/"
export no_proxy="127.0.0.1,localhost"

# For curl
export HTTP_PROXY="http://192.168.1.35:3128/"
export HTTPS_PROXY="http://192.168.1.35:3128/"
export FTP_PROXY="http://192.168.1.35:3128/"
export NO_PROXY="127.0.0.1,localhost"

Any ideas?

I usaly add --build-arg http_proxy=${http_proxy} to my docker build command, so whenever a system uses a proxy, it will be used to build the image as well. If no proxy is present, it will set the variable to “”, which bypasses the proxy.

Start with --build-arg http_proxy and add furher proxy related variables if required.

1 Like

Yep, bingo, works like a champ!

docker build --build-arg http_proxy=http://192.168.1.35:3128 -t dadiaspe-custom-image-6 -f Dockerfile5 .

Thanks so much @meyay

Welcome!

If you do use a script to perform your builds, you should consider to use http_proxy=${http_proxy} (litteraly!) instead of typing the value, as this will work on machines where http_proxy is set, as well on machines where it’s not set.

When you configure the HTTP/HTTPS proxies in Docker for Desktop GUI, multiple things happen:

The docker daemon is configured with these proxies so that it can pull images
Every docker run command automagically gets HTTP_PROXY, http_proxy, HTTPS_PROXY and https_proxy added to the environnement variables.
It should have been the same for docker build but it’s been forgotten. That’s the bug you are seeing.
By the way, because of the magic env rewriting, you don’t need to set those env variables on you windows host.