windows 10上的docker can';启用VPN时不装载卷

windows 10上的docker can';启用VPN时不装载卷,docker,networking,windows-10,vpn,Docker,Networking,Windows 10,Vpn,在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\Do

在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虚拟机中运行docker,或者使用docker工具箱。这两个都不是特别好

还有其他可能的解决办法吗

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

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

我认为现在发生的是:

  • 当VPN被禁用时,您在您的机器上使用Docker守护进程,一切正常
  • 启用VPN时,会使用另一个Docker守护程序,因为VPN会将通信重定向到Docker主机(
    127.0.0.1
    默认情况下或通过设置)。这意味着这个IP或主机存在于您的VPN网络上,并且有一个Docker守护进程在监听它(这有点奇怪,不可否认,使用该守护进程可能有风险)
如果真的发生了这种情况,您肯定会看到来自
docker ps-a
docker image
等的不同输出,因为您正在连接到不同的守护进程。(通过您的VPN访问的守护进程实际上是由其他人拥有的,您最好不要使用它!)

您可以做什么:

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

要采取的操作将取决于您使用的VPN软件,或者您可以直接在windows计算机上添加路由(关于主题)

在启用VPN时查找您的IP,并将守护进程配置为侦听此IP

  • 启用VPN后,运行
    ipconfig/all
    ,查找VPN使用的接口及其IP地址,例如
    10.142.0.12
    (您可以比较启用VPN之前/之后的输出以确定它是哪一个)
  • 配置Docker守护进程以侦听此IP地址并重新启动它。默认情况下,或者在Windows配置文件位于
    %programdata%\docker\config\daemon.json
    上,您需要指定
    “主机”:[“10.142.0.12”,“127.0.0.1”]
    ,例如()
  • 启用VPN时,通过设置环境变量
    Docker\u host=10.142.0.12
    或使用客户端
    Docker-H 10.142.0.12
    将Docker主机配置为
    10.142.0.12
/!\安全注意:这可能会带来安全问题,因为任何在VPN网络上知道您的IP的人都可以在您的计算机上使用守护程序


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