设置为Windows防火墙以允许Docker for Windows共享驱动器

时间:2017-02-13 11:58:05

标签: docker docker-windows

Windows防火墙阻止了我允许Docker for Windows在Windows 10计算机上共享C:的尝试。

Windows防火墙关闭时正常工作。当我得到它

  

防火墙阻止了Windows和Windows之间的文件共享   容器。有关详细信息,请参阅文档。

文档说

  

您无需在任何其他网络上打开端口445。默认情况下,   允许从10.0.75.1端口445(Windows主机)连接   10.0.75.2(虚拟机)。

我试图找到如何做到的“谷歌搜索” - 有人可以建议吗?

37 个答案:

答案 0 :(得分:103)

您实际上不需要共享C驱动器,只需重新安装(或甚至可能取消选中 - 单击“确定” - 然后检查)Hyper-V虚拟网卡上的“文件和打印”共享服务。 See this article.

此外,如果您的网络配置文件(即公共)有限制,请考虑在执行上述操作之前,通过此PowerShell命令将“vEthernet(DockerNAT)”卡的默认“未识别网络”更改为私有:

Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

答案 1 :(得分:41)

好的,所以在运行同样的问题之后, 我找到了一个解决方案。

这就是我所做的:

第1步: 打开ESET。然后点击设置

click setup

第2步: 点击网络保护

click network protection

第3步: 单击疑难解答向导

click troubleshooting wizard

第4步: 查找通讯 10.0.75.2 (默认泊坞窗IP设置) 只需检查Docker设置中的IP范围。然后查找驻留在该范围内的IP。

find the connection

第5步: 点击取消屏蔽按钮,您就会收到此屏幕。

click unblock

这解决了我自己的问题。

然后,您可以转到规则并检查已添加的规则。

PS:这是我的第一篇文章,对于任何不正确的程序感到抱歉。

答案 2 :(得分:26)

我的解决方案是断开与VPN的连接;导致问题的原因

答案 3 :(得分:25)

只有这个解决方案可以帮助我:

  • 转到Hyper-V管理器 - >虚拟交换机管理器 - > DockerNAT - >连接类型:从内部更改为私有,应用,更改回内部,应用
  • 重新启动MobyLinuxVM
  • 重启Docker
  • 将Docker网络配置文件设置为“私有” Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
  • 在DockerNAT连接上重置Microsoft网络的文件和打印机共享
  • 转到Docker - >设置 - >共享驱动器并共享C:

答案 4 :(得分:23)

遇到此错误时,我没有使用任何第三方防火墙。我确信这是一个Windows防火墙问题,虽然禁用Windows防火墙对我不起作用。经过大量研究后,我终于找到了这篇博文:Docker on windows 10 error: A firewall is blocking file Sharing ...

最终与内置的Windows防火墙有关。

  

修复

     
      从 vEthernet(DockerNAT)网络适配器
  1. 取消选中 Microsoft网络的文件和打印机共享(您可以在Windows中找到该连接< em>网络和共享中心)。
  2.   
  3. 重新检查,并确保已启用。
  4.   

答案 5 :(得分:19)

最近的Windows 10更新后,我的C驱动器停止与Docker共享。我遇到了同样的问题,说它在尝试转发时被Windows防火墙阻止了。

通过以上解决方案,我发现了一些对我有用的东西比我在本页面看到的任何其他内容都简单。在 控制面板\所有控制面板项目\网络和共享中心 中,在 vEthernet(DockerNAT) 连接上,我取消选中属性 Microsoft网络的文件和打印机共享 并保存设置。然后我再次检查了该属性以重新启用它并再次保存。

此时,我能够在Docker设置中转发C盘。我不知道为什么会这样,但它不是防火墙问题,已经有DockerSmbMount的条目。

答案 6 :(得分:12)

卡巴斯基遇到了这个问题;关闭卡巴斯基工作,所以我知道这是防火墙。就我而言,卡巴斯基出于某种原因已经阻止了445端口。我不得不转到防火墙,本地服务(TCP)的数据包规则,并从块端口列表中删除445.

Image 1

Image 2

答案 7 :(得分:7)

对于域网络上的Windows 10计算机,在创建Hyper-V虚拟以太网适配器时,它将被归类为公共网络。您必须将其更改为专用网络,以允许使用更为宽松的Windows防火墙规则,从而允许文件共享。

在PowerShell中运行以下命令:

Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

如果计算机的虚拟Hyper-V网络连接被称为其他名称,请更改引号中的名称。

答案 8 :(得分:6)

我的问题是Cisco Anyconnect VPN干扰了内部docker网络

要解决此问题,请访问:
思科Anyconnect设置>首选项> 检查Allow local (LAN) access when using VPN

答案 9 :(得分:5)

这取决于您安装的防火墙。在我的情况下,我确实禁用了内置的Windows防火墙,我正在使用ESET Smart Security,所以我的规则如下:

  • IN 连接创建规则,因为您应该允许Docker连接到您的主机并将其设置为允许

enter image description here

  • 正确设置端口,如文档中所述445

enter image description here

  • 设置远程IP地址:

enter image description here

也许这不是答案,因为它与Windows防火墙无关,但可以为您提供有关如何操作的线索。

答案 10 :(得分:4)

以上都不适合我。

最后诀窍是打开&#34; vEthernet(DockerNAT)&#34;的属性。网络和勾选方框&#34; Hyper-V可扩展虚拟交换机&#34;位于&#34; Networking&#34;下的列表底部标签

不确定这是否是实际的修复,或者它是否只是以某种方式为我重置了网络适配器......但它确实有效!

答案 11 :(得分:3)

我遇到了同样的问题并尝试了所有修复 - 事实证明不止一个是必要的:

  • 添加防火墙规则(Norton Security for me)
  • 将网络设为私有
  • 分享驱动器

我在http://kajabity.com/2017/08/unblock-docker-for-windows-firewall-issues-with-host-volumes/

写了完整的解释

答案 12 :(得分:3)

每个人发布的所有内容都不适合我。

这个。

我安装了EDGE版本。然后我去了WINDOWS DEFENDER并禁用了DOCKER NAT的防火墙。 (不是我的实际以太网适配器,只是docker nat)

一旦我禁用了Windows防御者/防火墙,它就可以正常工作了。

啊。真的希望能帮助你们中的一些人!

答案 13 :(得分:2)

最近的Windows 10更新后,我的G驱动器停止与Docker共享。我遇到了同样的问题,说它在尝试转发时被Windows防火墙阻止了。

然后我试图通过几个建议来解决这个问题但我无法解决这个问题,之后我尝试重置共享驱动器下面的凭据,我的问题就解决了。

所以如果你想,那么你可以尝试这样做 -

enter image description here

答案 14 :(得分:2)

2020年1月25日

看来,这是旧版本中的问题,我安装了最新版本:

Docker version 19.03.5, build 633a0ea

它在没有任何配置的情况下对我有效。

enter image description here

答案 15 :(得分:2)

对于AVG Internet Security,在防火墙设置下启用 Internet连接共享模式可以解决这个问题。

enter image description here

答案 16 :(得分:2)

即使确保正确设置了入站防火墙规则,甚至在卸载并重新安装文件和打印共享服务之后,它也无法正常工作。

解决方案:除此之外我还必须做第三件事。我必须在公共网络的特定防火墙设置中停用在公共网络上阻止传入连接复选框。在这之后它开始为我工作。请参阅此消息末尾附带的屏幕截图。

不知道这个选项已存在多久了。我目前正在开发Win 10 Pro 1709 16299.402。

<强> 1。打开公共网络的特定防火墙设置 Open specific firewall settings for public networks

<强> 2。取消选中此复选框 Uncheck this checkbox

答案 17 :(得分:2)

在运行Cisco AnyConnect时,似乎许多人遇到此问题。我遇到了同样的问题,这是我的解决方法:

原因:Docker使用的子网在Cisco AnyConnect管理的安全路由列表中(我相信此列表由您的VPN管理员管理)。

解决方案:将Docker使用的子网更改为与AnyConnect管理的列表不重叠。

例如,对于我来说,我从10.0.75.0(与10.0.0.0/8重叠)更改为172.31.0.0/28。 enter image description here

答案 18 :(得分:2)

如果将vEthernet (DockerNAT)网络适配器的类型更改为Trusted network,则可以使用Kaspersky Internet Security轻松解决此问题。

设置>保护>防火墙>网络> vEthernet(DockerNAT)>选择“受信任的网络”

enter image description here enter image description here enter image description here enter image description here

答案 19 :(得分:2)

如另一个答案所述,Docker在VPN上表现不佳。 如果您使用的是Nordvpn,则必须禁用“ LAN上的不可见性” ,并且可能禁用“ Internet Kill Switch”

如果您这样做,即使在激活VPN的情况下也可以正常工作。

NordVPN Client

答案 20 :(得分:2)

我遇到与F-secure相同的问题,DeepGuard阻止了Docker服务。我的解决方案是:

打开F-secure客户端,然后点击“任务

enter image description here

选择“允许程序启动

enter image description here

从列表“com.docker.service”中选择并按“删除

enter image description here

之后重新启动 Docker客户端并尝试申请文件共享。

此处还有非常好的问题排查指南:Error: A firewall is blocking file sharing between Windows and the containers

答案 21 :(得分:1)

此(下面的链接)似乎是我到目前为止发现的最佳解决方案。它在重新启动后保持不变。最好在这里进行解释:https://gist.github.com/biggyspender/8b5b2ed9ff63de31045d41304e3915b3

每次启动系统时,似乎都会动态创建vEthernet网络接口,并且该接口是在“公共”组中创建的,而不是在“专用”组中创建的。在其中一个Docker启动脚本中进行的编辑(在上面的链接中被称为)可以自动执行以上由David Tesar指出的powershell命令/修复程序。...

相对于编辑脚本并将'Internal'更改为'Private',我更幸运地将功能添加到脚本中。

答案 22 :(得分:1)

就我而言,我在 具有高级安全性的Windows Defender防火墙 上启用了“阻止TCP 445”,并且它有效 enter image description here

答案 23 :(得分:1)

我遇到了同样的问题,防火墙不允许我共享我的C盘。我尝试了上面列出的所有解决方案,但对我来说没有任然后我从我的机器Control Panel\Programs\Programs and Features -> select Docker for Windows -> Uninstall完全卸载了docker
然后转到Menu hidden WMPL
之后我能够分享驱动器C

答案 24 :(得分:0)

我发现这很容易。只需转到您的网络连接即可。您可以进入控制面板/网络和共享。。您会找到各种连接。搜索Docker连接。选择默认值。选择网络后,转到属性。在属性部分中,启用选项 Hyper-V可扩展虚拟交换机。这将帮助虚拟容器使用网卡。

答案 25 :(得分:0)

对我来说(经过数小时的试错后,我做了什么)将子网掩码从255.255.255.240更改为255.255.255.0(不应更改任何内容)。

作为试错的一部分,我做了文章上列出的所有其他操作,但没有成功..但是最后一步做到了..并恢复为255.255.255.240并没有破坏循环。

我承认,这没有任何意义..但它可能与内部状态仅由网络变化触发有关。

无论如何,如果我只帮了一个忙,那是值得的。

Docker Desktop edge, 2.0.4.1 (34207)

答案 26 :(得分:0)

启用选项Hyper-V可扩展虚拟交换机对我有用。其他解决方案对我不起作用。 我是在 HyperV虚拟交换机管理器-DockerNAT-扩展-虚拟交换机扩展面板中更改配置的。

答案 27 :(得分:0)

替代解决方案!我不确定如何解决此问题,但我认为是通过以下方法来解决问题的。

  • 打开Hyper-V管理器
  • 选择虚拟交换机管理器
  • 如果将多个虚拟交换机称为DockerNAT,请将其中一个重命名为任何其他名称。
  • 确保DockerNAT的连接类型为内部网络。
  • 此外,请确保所有重复项的连接类型均为“外部网络”,并使用以太网连接,而不是无线连接(在下拉菜单中)。
  • 按确定,然后关闭Hyper-V Manager
  • 重新启动计算机(两次,以防万一)。
  • 现在,尝试在Docker For Windows中共享docker驱动器。

答案 28 :(得分:0)

对我来说,我唯一要做的就是暂时禁用Symantec端点保护中的防火墙。在docker设置GUI中共享C驱动器。回来并在symantec中启用防火墙。 (没有powershell命令等...)

enter image description here

答案 29 :(得分:0)

如果以上方法均无效,请确保未连接到 VPN 。这正是我发生的事情,我使用Cisco AnyConnect客户端连接到VPN,还请确保您在docker设置中设置了静态DNS。

答案 30 :(得分:0)

对于无法以任何方式解决此问题的人,您可以尝试以下操作:将驱动器手动映射到Docker主机:

https://github.com/docker/for-win/issues/466#issuecomment-416682825

研究在这里:https://github.com/docker/for-win/issues/466#issuecomment-398305463

答案 31 :(得分:0)

  1. 在Windows上打开Windows Defender防火墙设置。
  2. 打开“ Windows Defender防火墙属性”链接
  3. 选择私人个人资料标签
  4. 按下“受保护的网络连接”的自定义按钮
  5. 取消选中“ vEthernet(DockerNAT)”
  6. 回到dockers桌面并应用共享

Step by step instructions image

答案 32 :(得分:0)

我的解决方案:

我正在使用QuickHeal Antivirus,并按照以下步骤为我工作。

步骤#1 转到防火墙保护 Step1

步骤2 选择“高级设置” Step2

步骤#3 在“网络配置文件”列下找到“公共”,并将“文件和打印机共享”选项设置为“打开” Step3

答案 33 :(得分:0)

我尝试了此处和https://github.com/docker/for-win/issues/360上列出的所有内容

对我没有任何帮助。

我在docker容器上运行我的开发环境,而在Corporate VPN(Cisco AnyConnect)上时,我需要在容器上挂载本地驱动器以访问我的项目文件。

这是对我有用的docker hack。将--publish 8000:8000添加到现有的docker run命令中。

所以

docker run -v C:/Users/kumar.joshi/KumarData:/mnt --name dev <image:latest>

将成为

docker run -v C:/Users/kumar.joshi/KumarData:/mnt --name dev --publish 8000:8000 <image:latest>

确保未使用该端口,否则会出现此错误:

  

绑定0.0.0.0:8000失败:端口已分配

答案 34 :(得分:0)

简而言之,请使用Edge版本。

自2.1.5.0(2019-11-04)开始的Windows的Edge版本Docker具有文件共享的新实现,而无需修改防火墙 https://docs.docker.com/docker-for-windows/edge-release-notes/

“新文件共享实现:Docker Desktop引入了一个新文件共享实现,该实现使用gRPC,FUSE和Hypervisor套接字而不是Samba,CIFS和Hyper-V网络。新实现提供了改进的I / O性能。此外,使用新文件系统时:

Window -> Editor Tabs -> Goto Next Splitter

您可以下载边缘版本:https://download.docker.com/win/edge/Docker%20Desktop%20Installer.exe

注意,到目前为止,边缘版本2.1.7.0将用于下一个稳定版本:“注意:Docker Desktop Edge 2.1.7.0是即将发布的主要稳定版本的候选版本。”因此,使用Edge的风险相对较低。或者,您可以等待下一个稳定版本,以避免所有这些防火墙问题。

答案 35 :(得分:0)

使它起作用的唯一方法是在PC上创建本地用户,并在共享时使用它作为凭据。

此处有更多信息:https://www.mattwoodward.com/2019/05/09/docker-on-windows-10-sharing-a-drive-when-logging-in-with-a-microsoft-account/

答案 36 :(得分:0)

上面的建议对我没有任何帮助,但是卸载Docker Desktop(重新启动PC)并重新安装Docked终于解决了该问题。