【问题标题】:Connecting to docker machine while connected through VPN in Windows 7在 Windows 7 中通过 VPN 连接时连接到 docker 机器
【发布时间】:2017-04-19 18:33:45
【问题描述】:

我在 Windows 7 上运行 docker-machine 作为 docker 工具箱的一部分

当我跑步时

> docker-machine env
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=...\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default

配置shell后,我可以毫无问题地与docker交互。

当我通过 VPN 连接到不同的网络时出现问题。

当我使用时

> tracert 192.168.99.100

我可以看到这个 IP 被 VPN 拦截了,这就是我在运行时遇到异常的原因

> docker-machine env
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout

有没有办法改变 DOCKER_HOST 如下?

SET DOCKER_HOST=tcp://127.0.0.1:2376

感谢您的帮助!

【问题讨论】:

    标签: docker-machine docker-toolbox


    【解决方案1】:

    在不连接 VPN 的情况下启动 docker quickstart 终端。然后按照以下步骤操作:

    1. docker-machine 停止机器名
    2. VBoxManage modifyvm "machine-name" --natpf1 "machine-name,tcp,,2376,,2376"
    3. docker-machine 启动机器名

    假设你的机器名是默认的,那么命令是:VBoxManage modifyvm “default” ---natpf1 “default,tcp,,2376,,2376”

    1. export DOCKER_HOST="tcp://localhost:2376"
    2. 导出 DOCKER_TLS_VERIFY=”0″
    3. 别名 docker=”docker --tlsverify=false”

    现在连接到 VPN。你已准备好出发。 Docker 将像往常一样开始工作。

    【讨论】:

    • 在这个问题上进行了大量搜索后,这个答案终于对我有用。谢谢!
    【解决方案2】:

    在我的 Docker 终端中:

    $ docker-machine env
    export DOCKER_TLS_VERIFY="1"
    export DOCKER_HOST="tcp://192.168.99.100:2376"
    export DOCKER_CERT_PATH="XXXXXX\.docker\machine\machines\default"
    export DOCKER_MACHINE_NAME="default"
    export COMPOSE_CONVERT_WINDOWS_PATHS="true"
    # Run this command to configure your shell:
    # eval $("D:\Program Files\Docker Toolbox\docker-machine.exe" env)
    

    覆盖 DOCKER_HOST 环境变量:

    $ export DOCKER_HOST="tcp://127.0.0.1:2376"
    

    参考docker-and-cisco-anyconnect-vpn。这篇文章可能对你有所帮助。

    【讨论】:

      【解决方案3】:

      另一种选择是在路由表中创建一个新条目,以覆盖 VPN 软件创建的条目。

      首先,找到 VirtualBox Host-Only 网络接口的名称

      netsh int ip show ipaddresses
      

      在我的机器上,这个接口被命名为“vbox2”。现在,指定到 192.168.99.100 的 docker 机器的所有流量都应该通过“vbox2”接口发送。

      netsh int ip add route 192.168.99.0/24 interface=vbox2 store=persistent
      

      我更喜欢这种方法而不是 127.0.0.1 解决方案,因为我不必使用 VBoxManage modifyvm 转发任何新端口。

      【讨论】:

        猜你喜欢
        • 2017-05-19
        • 2012-04-22
        • 2023-03-08
        • 1970-01-01
        • 2012-07-06
        • 2019-12-14
        • 2022-06-19
        • 2017-04-13
        • 1970-01-01
        相关资源
        最近更新 更多