可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Looking at docs there is no instruction on how to run it behind a proxy.
https://docs.docker.com/installation/ubuntulinux/
Reading on forums, the instruction is to update /etc/default/docker to export the proxy setup.
export http_proxy="http://127.0.0.1:3128/"
export https_proxy="http://127.0.0.1:3128/"
export HTTP_PROXY="http://127.0.0.1:3128/"
export HTTPS_PROXY="http://127.0.0.1:3128/"
Then we restart/start docker
sudo service docker start
Inside a container, if I run 'apt-get', npm install, bower install I cant get through the proxy.
Not sure what I m missing.
回答1:
Ubuntu 14.04 LTS
For Ubuntu 14.04 LTS
who uses SysVinit
, you should modify /etc/default/docker
file:
# cat /etc/default/docker
# Docker Upstart and SysVinit configuration file
#
# THIS FILE DOES NOT APPLY TO SYSTEMD
#
# Please see the documentation for "systemd drop-ins":
# https://docs.docker.com/engine/articles/systemd/
#
.......
# If you need Docker to use an HTTP proxy, it can also be specified here.
export http_proxy="http://web-proxy.corp.xxxxxx.com:8080/"
export https_proxy="https://web-proxy.corp.xxxxxx.com:8080/"
......
Then restart docker
:
service docker restart
Ubuntu 16.04 LTS / Ubuntu 18.04 LTS
For Ubuntu 16.04 LTS
who uses Systemd
, you can follow this post:
(1) Create a systemd drop-in directory:
mkdir /etc/systemd/system/docker.service.d
(2) Add proxy in /etc/systemd/system/docker.service.d/http-proxy.conf
file:
# cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=https://web-proxy.corp.xxxxxx.com:8080/"
Environment="HTTPS_PROXY=https://web-proxy.corp.xxxxxx.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,localaddress,.localdomain.com"
(3) Flush changes:
systemctl daemon-reload
(4) Restart Docker:
systemctl restart docker
Official Reference
回答2:
For Ubuntu 14.04.2 LTS
Linux vagrant-ubuntu-trusty-64 3.13.0-54-generic #91-Ubuntu SMP Tue May 26 19:15:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Edit you /etc/default/docker
file
sudo vim /etc/default/docker
Add this line at the bottom:
export http_proxy="http://PROXY_IP:PROXY_PORT"
Restart the docker
service
sudo service docker restart
回答3:
You can try to add lines in /etc/environment
:
https_proxy="http://127.0.0.1:3128"
http_proxy="http://127.0.0.1:3128"
ftp_proxy="http://127.0.0.1:3128"
no_proxy="127.0.0.1/8, localhost, 192.168.0.0/16"
it will be useful for all services on your Linux system
Then edit /lib/systemd/system/docker.service
.
In the end of the [Service]
section, add line:
EnvironmentFile=/etc/environment
And then:
sudo systemctl daemon-reload
sudo systemctl restart docker.service
回答4:
systemctl will have to installed, which can be problematic.
In case /etc/systemd/system/docker.service.d/http-proxy.conf or /etc/default/docker solution does not work for you, simply use the below command:
docker build [OPTIONS] PATH --build-arg http_proxy=http://your.proxy:port --build-arg https_proxy=http://your.proxy:port --build-arg no_proxy=.internal.domain,localhost,127.0.0.1
回答5:
In Ubuntu 14.04 LTS:
An interesting issue about the HTTP_PROXY, HTTPS_PROXY is that: if your password has a special char like "$", "%", then it will not be processed correctly by the docker daemon when you execute command like: dock run xxx, you will encounter error. Then you can try to set the special char to others, good luck.
回答6:
According to the Docs
Add to ~/.docker/config.json
proxy configuration
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
回答7:
You should replace 127.0.0.1
to your host IP or some public accessible IP