【问题标题】:docker on windows 10 can't mount volumes when VPN enabled启用 VPN 后,Windows 10 上的 docker 无法挂载卷
【发布时间】:2019-02-27 14:11:22
【问题描述】:

在 Windows 10 上运行 docker 时,我发现安装本地卷时出现问题。这些问题仅在我启用公司 VPN 时出现。

C:\Users\matt> docker run --rm -v d:/tmp:/data alpine ls /data
my_local_test_file.txt

当连接到 VPN 时,我得到了这个:

C:\Users\matt> docker run --rm -v d:/tmp:/data alpine ls /data
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: error while creating mount source path '/host_mnt/d/tmp': mkdir /host_mnt/d: file exists.

Docker 版本为 17.12.0-ce-win47

我认为问题在于 docker 在挂载本地卷时使用网络,而 VPN 通过 VPN 网关路由所有网络流量,因此 docker 看不到本地驱动器。

有解决办法吗?

我知道我可以在 linux VM 中运行 docker,或者使用 docker 工具箱。这些都不是特别好。

还有其他可能的解决方法吗?

【问题讨论】:

    标签: docker networking windows-10 vpn


    【解决方案1】:

    VPN 通过 VPN 网关路由所有网络流量

    您可能是对的,在这种情况下,从 Docker 客户端路由到 Docker 守护程序的所有流量也将通过 VPN。在 Windows 上使用 Docker CLI 时,它将连接到可通过网络访问的 Docker 守护程序。使用 VPN 可能会破坏这种机制。

    我认为正在发生的事情是:

    • 禁用 VPN 后,您可以在计算机上使用 Docker 守护程序,一切正常
    • 启用 VPN 后,将使用另一个 Docker 守护程序,因为您的 VPN 将流量重定向到您的 Docker 主机(默认为127.0.0.1 或通过-H flag or DOCKER_HOST env variable 设置)。这意味着该 IP 或主机以某种方式存在于您的 VPN 网络中,并且有一个 Docker 守护程序在监听它(诚然,这有点奇怪,使用该守护程序可能会有风险)

    如果这真的发生了,您肯定会看到来自docker ps -adocker images 等的不同输出,因为您连接到不同的守护进程。 (通过你的VPN访问的守护进程实际上是别人拥有的,你最好不要使用它!)

    你可以做什么:

    不要通过您的 VPN 路由 127.0.0.1(或任何配置为 Docker 主机)

    采取的措施取决于您使用的 VPN 软件,或者您可以直接在 Windows 机器上添加路由(主题为here is a good article

    在启用 VPN 时找出您的 IP 并配置 Daemon 以侦听此 IP

    • 启用 VPN 后,运行 ipconfig /all 并找到 VPN 使用的接口及其 IP 地址,例如 10.142.0.12(您可以比较启用 VPN 之前/之后的输出以确定它是哪一个)李>
    • 配置您的 Docker 守护程序以侦听此 IP 地址并重新启动它。 use the UI 或 Windows 配置文件默认位于 %programdata%\docker\config\daemon.json,您需要指定 "hosts": ["10.142.0.12", "127.0.0.1"] 例如 (see docs for details)
    • 在启用 VPN 时将 Docker 主机配置为 10.142.0.12,通过设置环境变量 DOCKER_HOST=10.142.0.12 或使用客户端 docker -H 10.142.0.12 <cmd>

    /!\ 安全说明:这可能会带来安全问题,因为任何知道您在 VPN 网络上的 IP 的人都可以使用您机器上的守护进程


    希望这会有所帮助。我不是 Windows 专家,因此无法提供有关 Windows 相关问题的详细信息,但如果需要,请随时询问详细信息。

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多