最新消息:

Docker设置代理

IT技术 ipcpu 1154浏览 0评论

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设置代理

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址