Docker设置代理.md
Docker设置代理,有两种情况,第一种是执行docker pull命令时需要设置代理,以便来访问google的镜像资源等等,第二种情况就是给创建DockerContainer(docker容器、POD容器)设置代理。
一、Dockerd设置代理
在执行docker pull时,是由守护进程dockerd来执行。因此,代理需要配在dockerd的环境中。而这个环境,则是受systemd所管控,因此实际是systemd的配置。
需要在/usr/lib/systemd/system/docker.service添加Environment参数。如下:
# vim /usr/lib/systemd/system/docker.service
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
改完需要重启下docker服务。
二、DockerContainer 代理
在容器运行阶段,如果需要代理上网,则需要配置 ~/.docker/config.json。
如下配置,只在Docker 17.07及以上版本生效。
{
"proxies":
{
"default":
{
"httpProxy": "http://192.168.1.12:3128",
"httpsProxy": "http://192.168.1.12:3128",
"noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"
}
}
}
这个看起来就很怪异的配置方式,在用户目录设置全局选项,让人难以理解。
我们在主机上配置了代理,运行了一次发现,就是dockerd程序把配置文件的代理配置直接以环境变量方式给到容器了。费这么大劲干啥? 直接容器运行时传递个http_proxy变量不好么?
参考资料
https://docs.docker.com/network/proxy/
转载请注明:IPCPU-网络之路 » Docker设置代理