于02/10/2018更新
借助--config
docker选项中的新功能,您无需再在Dockerfile中设置Proxy。您可以在企业环境中使用相同的Dockerfile。
--config string Location of client config files (default "~/.docker")
或环境变量 DOCKER_CONFIG
`DOCKER_CONFIG` The location of your client configuration files.
$ export DOCKER_CONFIG=~/.docker
https://docs.docker.com/engine/reference/commandline/cli/
https://docs.docker.com/network/proxy/
我建议使用httpProxy, httpsProxy, ftpProxy
和设置代理noProxy
(官方文档缺少ftpProxy
有时有用的变量)
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:3001",
"httpsProxy": "http://127.0.0.1:3001",
"ftpProxy": "http://127.0.0.1:3001",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
调整代理IP和端口(如果需要)并保存到 ~/.docker/config.json
正确设置后,您可以运行docker build和docker run正常运行。
$ docker build -t demo .
$ docker run -ti --rm demo env|grep -ri proxy
(standard input):http_proxy=http://127.0.0.1:3001
(standard input):HTTPS_PROXY=http://127.0.0.1:3001
(standard input):https_proxy=http://127.0.0.1:3001
(standard input):NO_PROXY=*.test.example.com,.example2.com
(standard input):no_proxy=*.test.example.com,.example2.com
(standard input):FTP_PROXY=http://127.0.0.1:3001
(standard input):ftp_proxy=http://127.0.0.1:3001
(standard input):HTTP_PROXY=http://127.0.0.1:3001
旧答案(已退役)
Dockerfile中的以下设置适用于我。我测试了CoreOS
,Vagrant
和boot2docker
。假设代理端口是3128
在Centos中:
ENV http_proxy=ip:3128
ENV https_proxy=ip:3128
在Ubuntu中:
ENV http_proxy 'http://ip:3128'
ENV https_proxy 'http://ip:3128'
请注意格式,有些带有http,有些没有,有些带有单个配额。如果IP地址为192.168.0.193,则设置为:
在Centos中:
ENV http_proxy=192.168.0.193:3128
ENV https_proxy=192.168.0.193:3128
在Ubuntu中:
ENV http_proxy 'http://192.168.0.193:3128'
ENV https_proxy 'http://192.168.0.193:3128'
如果您需要在coreos中设置代理,例如提取图像
cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://192.168.0.193:3128"