4

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

当我跑

> 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

谢谢你的帮助!

4

3 回答 3

14

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

  1. 码头工人机器停止机器名称
  2. VBoxManage modifyvm "machine-name" --natpf1 "machine-name,tcp,,2376,,2376"</li>
  3. docker-machine 启动机器名

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

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

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

于 2018-01-30T08:20:09.790 回答
0

另一种选择是在路由表中创建一个新条目,以覆盖 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 转发任何新端口。

于 2018-10-18T07:43:18.817 回答
0

在我的 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 。这篇文章可能会对您有所帮助。

于 2017-11-01T02:14:07.330 回答