docker无法使用系统代理

时间:2017-10-06 06:14:40

标签: docker proxy windows-10 docker-for-windows ntlm-authentication

我正在尝试在企业防火墙后面使用docker。

enter image description here

我想强制docker使用系统代理,但此选项不可用。如何使docker成为系统代理。

enter image description here

3 个答案:

答案 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时都需要检查它。

  • 将CNTLM设置为侦听0.0.0.0 3128,而不仅仅是3128或127.0.0.1 3128.这样可以避免每次PC获取新IP地址时更新此IP地址的麻烦。只需拥有端口号就可以防止来自运行Docker的VM的流量被#34;听到"。
  • 计算NTLMv2哈希并将其存储在配置文件中,而不是您的用户名和密码。这对于每个PC和用户帐户都是不同的,因此除非您想要被锁定,否则不要与另一台PC共享您的未经编辑的配置文件。下次更改Windows密码时,您需要更新此存储的哈希值。
  • 在对配置文件进行任何更改后重新启动cntlm Windows服务。
  • 在cmd.exe或PowerShell中运行ipconfig以查找当前的IP地址。如果您使用的是公司VPN,请使用WiFi或以太网适配器的IP地址,而不是VPN。
  • 在" Web服务器(HTTP)"中键入http://ipfromipconfig:3128/框。确保复选框"同时使用相同的"检查。

答案 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