答案 0 :(得分:3)
我写了一篇关于使用奇怪的DummyDesperatePoitras虚拟交换机作为CNTLM的锚的博客文章,这解决了我在这里提到的一些问题(每次IP更改时都必须更改Docker的代理地址,除其他外):
http://mandie.net/2017/12/10/docker-for-windows-behind-a-corporate-web-proxy-tips-and-tricks/
截至2017年11月,Docker for Windows中仍未实现此功能:https://github.com/docker/for-win/issues/589
我找到的最佳解决方案是CNTLM,但我并不满意,因为:
1)CNTLM尚未在5年内更新
2)您必须在Docker GUI中设置代理IP,使其相当自动化。 Docker for Windows GUI从MobyLinux VM读取代理设置,而不是从Windows注册表,配置文件或Windows环境变量中读取代理设置。在Windows中设置HTTP_PROXY和HTTPS_PROXY对Docker完全没有影响。我还没有找到任何以编程方式设置代理值的方法; MobyLinux VM不接受ssh连接。如果有人从命令行或脚本中找到了解决方法,我很乐意知道。
3)将代理IP设置为127.0.0.1将无法正常工作,因为这将使Docker 真正运行的虚拟机尝试使用自己的接口,而不是运行CNTLM的主机PC。我也尝试过DockerNAT接口IP 10.0.75.1,但没有成功。
4)这意味着代理IP需要是活动外部网络接口的当前IP地址。如果你在建筑物周围移动很多,每次想要使用Docker时都需要检查它。
答案 1 :(得分:2)
使用CNTLM使代理后面的工作自动化。它使我们能够在没有任何凭据的情况下指定任何地方的IP地址,因此安全性更高,并且每当更改密码时,我们只需要在一个地方进行操作即可,我们还可以指定不应被代理的URL。
从Docker 18.03开始,有可用的特殊DNS名称:host.docker.internal
。这样就可以从Docker容器连接到主机。现在,当我们在cntlm.ini中设置CNTLM代理以使其在0.0.0.0:3128
上监听时:
Listen 0.0.0.0:3128
然后,我们可以使用host.docker.internal:3128
地址在Docker设置代理中指定地址,该地址将转换为我们机器的适当的当前本地地址。
答案 2 :(得分:-1)
您可以设置两个环境变量http_proxy和https_proxy
http_proxy,其值为http://username:password@proxyIp:proxyport
例如,在我的情况下,它是 http://venkat_krish:password@something.ad.somthing.com:80您可以将其用于https代理
注意:
如果你有任何特殊字符,除了_& 。在用户名或密码中 你必须编码网址。点击此链接获取网址编码https://grox.net/utils/encoding.html
例如,如果您的密码是abc @ 123,那么它将被写为abc%40123