3

我正在尝试在公司防火墙后面使用 docker。

在此处输入图像描述

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

在此处输入图像描述

4

3 回答 3

5

我写了一篇关于使用奇怪的 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真正运行的虚拟机尝试自己的接口,而不是主机 PC 上运行 CNTLM 的虚拟机。我也试过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 的流量被“听到”。
  • 计算 NTLMv2 哈希并将其存储在配置文件中,而不是您的用户名和密码。这对于每台 PC 和用户帐户都会有所不同,因此除非您想被锁定,否则不要与另一台 PC 共享您未编辑的配置文件。下次更改 Windows 密码时,您将需要更新此存储的哈希值。
  • 在对其配置文件进行任何更改后重新启动 cntlm Windows 服务。
  • 在 cmd.exe 或 PowerShell 中运行 ipconfig 以查找您当前的 IP 地址。如果您使用的是企业 VPN,请使用 WiFi 或以太网适配器的 IP 地址,而不是 VPN。
  • 在“Web 服务器 (HTTP)”框中键入http://ipfromipconfig:3128/ 。确保选中“对两者使用相同”复选框。
于 2017-11-14T09:39:56.810 回答
3

使用 CNTLM 可以自动在代理后面工作。它允许我们在没有任何凭据的情况下指定任何地方的 IP 地址,因此安全性更好,每当我们更改密码时,我们只需在一个地方进行,我们还可以指定不应被代理的 URL。从 18.03 Docker 版本开始,有可用的特殊 DNS 名称:host.docker.internal. 这允许从 Docker 容器连接到主机。现在,当我们在 cntlm.ini 中设置 CNTLM 代理以使其监听时0.0.0.0:3128

Listen 0.0.0.0:3128

然后我们可以使用host.docker.internal:3128地址在 Docker 设置代理中指定,该地址将被转换为我们机器的适当和当前本地地址。

于 2020-03-04T07:26:59.493 回答
-1

你可以设置两个环境变量 http_proxy 和 https_proxy

http_proxy 的值为http://username:password@proxyIp:proxyport

例如,就我而言,它是 http://venkat_krish:password@something.ad.somthing.com:80

您可以将其用于 https 代理

笔记:

如果您有除 _ & 之外的任何特殊字符。在用户名或密码中,您必须对 url 进行编码。按照此链接进行 url 编码https://grox.net/utils/encoding.html

例如,如果您的密码是 abc@123,那么它将被写为 abc%40123

于 2017-10-06T06:21:17.743 回答