【问题标题】:Docker VM host on Windows 7 behind corporate proxy cannot contact proxy or wider internet企业代理后面的 Windows 7 上的 Docker VM 主机无法联系代理或更广泛的互联网
【发布时间】:2018-09-25 15:10:14
【问题描述】:

欢迎使用另一种略有不同的“企业代理背后的 docker-machine”。

相当确定这不是该主题领域其他问题的完全重复,我花费了大量时间尝试在此处找到的其他潜在解决方案无济于事,但因为我真的被难住了,我们开始吧……

症状:

root@default:/home/docker# docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: 
proxyconnect tcp: dial tcp: lookup dev-webaccess on 10.0.2.3:53: no such host.
See 'docker run --help'.

这看起来像是试图在 VM 中解析我的代理 (dev-webaccess) 并失败。 似乎我也无法 ping 虚拟机之外的任何东西。 感觉这是 VM 中的错误网络配置,因为流量无法流出,但我不确定到底是什么问题。

我是怎么到这里的:

  1. 使用 VirtualBox + NDIS6 驱动程序在 Windows 7 上安装 Docker Toolbox 18.03.0-ce
  2. 将代理环境变量添加到 Docker 工具箱的 start.sh,供 Docker 快速入门终端使用:

  3. 启动快速启动终端。这似乎很顺利: 代理详细信息也使其进入默认机器的config.json

  4. 然后,在执行 eval $(docker-machine env default) 之后,我们可以 ssh 进入默认机器:

  5. 然后如果我们尝试docker run hello-world,乐趣就开始了:

这是default-machineroute 的输出:

最后,问题来了:这里显示的代理或网络配置有什么可以解释为什么流量无法从虚拟机default-machine 到我的代理和更广泛的互联网的原因吗? 在我的非网络眼中,它看起来好像流量试图通过eth0 离开虚拟机并且根本无法到达任何地方。

如果有人告诉我我是个白痴,并且在这里错过了一些非常明显的东西,我会很高兴...

【问题讨论】:

  • HTTPS_PROXY 也应该是 http://....
  • bcoz 它在 8080 相同的端口上运行...还在代理 url(s) 中添加用户名密码
  • @kakabali 凭据在代理 url 中,但出于显而易见的原因,我已将其删除。代理 url 中提到的端口 8080 是代理接受传入连接的端口,即端口 8080 正在某个远程计算机上使用,而不是本地或 vm afaik 内部。
  • 在 HTTPS_PROXY 变​​量中使用 http 而不是 https
  • 不幸的是,改变没有效果

标签: docker proxy boot2docker docker-toolbox


【解决方案1】:

我似乎已经解决了这个问题,尽管我无法假装确切知道为什么会解决这个问题。实际上有点令人惊讶,只是我在https://github.com/docker/machine/issues/2418 阅读到的“我会在这一点上尝试任何事情”的一个孤独的变化@

C:\Users\user.name\.docker\machine\machines\default\config.json 我有以下内容:

"HostOptions": {
    "Driver": "",
    "Memory": 0,
    "Disk": 0,
    "EngineOptions": {
        "ArbitraryFlags": [],
        "Dns": null,
        "GraphDir": "",
        "Env": [
            "HTTP_PROXY=http://user.name:password@dev-webaccess:8080",
            "HTTPS_PROXY=https://user.name:password@dev-webaccess:8080"
        ],

我刚刚删除了显式协议(http://、https://),做了一个docker-machine provision default,瞧!我的虚拟机像梦一样工作:

"HostOptions": {
    "Driver": "",
    "Memory": 0,
    "Disk": 0,
    "EngineOptions": {
        "ArbitraryFlags": [],
        "Dns": null,
        "GraphDir": "",
        "Env": [
            "HTTP_PROXY=user.name:password@dev-webaccess:8080",
            "HTTPS_PROXY=user.name:password@dev-webaccess:8080"
        ],

如果有人能解释为什么这被证明是解决办法,我很想知道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2012-02-04
    相关资源
    最近更新 更多