docker无法使用系统代理

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

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

enter image description here

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

enter image description here

最佳答案

我写了一篇关于使用奇怪的 DummyDesperatePoitras 虚拟交换机作为 CNTLM anchor 的博客文章,它解决了我在这里提到的一些问题(每次 IP 更改时都必须更改 Docker 的代理地址,等等)东西):

http://mandie.net/2017/12/10/docker-for-windows-behind-a-corporate-web-proxy-tips-and-tricks/

截至 2017 年 11 月,此功能在 Windows 版 Docker 中仍未实现: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 真正运行的虚拟机尝试其自己的接口(interface),而不是主机上的接口(interface)运行 CNTLM 的 PC。我也尝试过DockerNAT接口(interface)IP,10.0.75.1,没有成功。

4) 这意味着代理 IP 需要是事件外部网络接口(interface)的当前 IP 地址。如果您经常在建筑物中移动,则每次要使用 Docker 时都需要检查此项。

  • 将 CNTLM 设置为监听 0.0.0.0 3128,而不仅仅是 3128 或 127.0.0.1 3128。这将省去您每次 PC 获取新 IP 地址时更新此 IP 地址的麻烦。只需提供端口号即可防止“听到”来自运行 Docker 的虚拟机的流量。
  • 计算 NTLMv2 哈希并将其存储在配置文件中,而不是您的用户名和密码。这对于每台电脑和用户帐户来说都是不同的,因此不要与另一台电脑共享您未编辑的配置文件,除非您想被锁定。当您下次更改 Windows 密码时,您需要更新此存储的哈希值。
  • 对其配置文件进行任何更改后,重新启动 cntlm Windows 服务。
  • 在 cmd.exe 或 PowerShell 中运行 ipconfig 以查找您当前的 IP 地址。如果您使用的是公司 VPN,请使用 WiFi 或以太网适配器的 IP 地址,而不是 VPN。
  • 类型 http://ipfromipconfig:3128/进入“Web 服务器 (HTTP)”框。确保选中“对两者使用相同的”复选框。

关于docker无法使用系统代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46599381/

相关文章:

android - 避免中间人(代理)Android

amazon-ec2 - AWS EC2 Windows 10无法访问元数据

node.js - Docker-compose使2个微服务(前端+后端)通过http请求相互通信

Docker-compose 依赖似乎不起作用

security - 代理服务器可以缓存 SSL GET 吗?如果不是,响应主体加密就足够了吗?

docker - 在 docker 中切换到 Linux 容器时出错

android - 刚刚安装了 Windows 10 和 Eclipse 不再启动

docker - 如何清理我的 docker 主机

docker - 在 Docker 中构建干净的 Go 应用程序

c++ - 只想为一个应用程序实现 VPN