企业代理后面的Windows 7上的Docker VM主机无法联系代理或更广泛的Internet

时间:2018-09-25 15:10:15

标签: docker proxy boot2docker docker-toolbox

欢迎使用另一种稍有不同的风味,即“公司代理后面的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之外的任何内容。 感觉这是VM中的网络配置错误,因为流量无法畅通无阻,但我不确定到底是什么问题。

我怎么到这里:

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

  3. 启动快速入门终端。这似乎很好: enter image description here 代理详细信息还将其放入默认计算机的config.json中: enter image description here

  4. 然后,在执行评估$(docker-machine env default)之后,我们可以ssh进入默认计算机: enter image description here

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

以下是routedefault-machine的输出: enter image description here

因此,最后是一个问题:这里显示的有关代理或网络配置的任何信息可以解释为什么流量无法从VirtualBox default-machine到达我的代理和更广泛的Internet吗? 通过我非网络的眼神,看起来流量似乎试图通过eth0离开虚拟机,根本无法到达任何地方。

很高兴得知我是个白痴,错过了这里令人眼花obvious乱的东西……

1 个答案:

答案 0 :(得分:2)

我似乎已经解决了这个问题,尽管我无法假装确切地知道为什么可以解决它。实际上有点令人惊讶,只是我在这里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"
        ],

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