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


139

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

关闭Windows防火墙后,工作正常。当我得到

防火墙阻止Windows与容器之间的文件共享。请参阅文档以获取更多信息。

该文件说

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

我因试图找到方法而“被谷歌搜索”-有人可以建议吗?


20
退出VPN后,Cisco AnyConnect VPN阻止了我的工作。
克里斯·沃尔夫,

1
我让Cisco阻止了我,但我想加入VPN以及Docker共享...有什么想法吗?
Nicolas Irisarri

1
我跟着这个诺顿防火墙和它的工作完美stackoverflow.com/questions/45159006/...
罗宾·塞纳

请参见下面的职位,回答这个问题superuser.com/questions/1470821/...
亚拉文小号

1
@NicolasIrisarri:我解决了相同的问题(需要同时使用它们)。解决方案是使用与AnyConnect保护的子网不同的子网。请参阅下面的答案:stackoverflow.com/a/58406873/9064636
Averell,

Answers:


151

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

另外,如果您的网络配置文件(即公共)受到限制,请考虑通过以下PowerShell命令将“ vEthernet(DockerNAT)”卡的默认“未识别网络”更改为私有,然后再执行以下操作:

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

4
运行上面的Powershell命令后,我不得不关闭Docker for Windows并重新启动它。您可以运行Get-NetConnectionProfile以确保DockerNAT网络在Private类别中
seangwright

1
指向blog.olandese.nl/2017/05/03/…的链接解决了我的问题。非常感谢!
安德里

1
这些都不适合我,所以我尝试了:stackoverflow.com/a/47837191/1895627
Andrei

3
我无法将其卸载,但出现错误0x80071779,我尝试禁用->启用。还禁用了防火墙...我也试图将其设置为私有,但仍然无法正常工作,有什么想法吗?
BrunoLM

2
卸载文件和打印共享服务:Disable-NetAdapterBinding -Name "vEthernet (DockerNAT)" -ComponentID ms_server
Marcel DB

73

好的,所以在遇到同样的问题后,我找到了解决方案。

这是我所做的:


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

点击设置

步骤2:点击“ 网络保护”

点击网络保护

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

单击故障排除向导

步骤4:查找通信10.0.75.2(默认docker IP设置),只需检查docker设置 中定义的IP范围。然后寻找该范围内的IP。

找到连接

步骤5:单击取消阻止按钮,然后您应该会收到此屏幕。

点击取消阻止

这为我自己解决了这个问题。

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


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


这篇文章对我来说非常有用,因为在添加文档中解释的规则时,提到的IP地址有所不同。死了!
DelphiLynx

11
对于在那里的所有ESET用户,是解决方案,谢谢!
cudacoder '17

2
谢谢弗朗什·范登伯格的出色贡献。对于ESET用户而言,这确实是一种解决方案,并且非常优雅。
Vacilando

对于ESET,请确保docker网络位于“受信任的区域”中
WhiteKnight

这个精确的解决方案对我来说是完美的。谢谢!
哈立德

63

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

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

6
值得一提的Set-NetConnectionProfile是,在PowerShell中以admin(而不是正常的Cmd)身份运行。它对我来说很好用,但以太网适配器仍然unidentified network
可用

3
地毯炸弹。其他解决方案均无效。谢谢。
戴维·韦斯特

这个工作100%。这次没有其他选择起作用,最终的解决方案是将网络设置为专用。
lordg '18

谢啦!你救了我的日子。那只是修复该死错误的一种工作方法。
TimeCoder

为我工作。其他大多数解决方案都没有。确保遵循所有步骤。我错过了自己承担的“将Docker网络配置文件设置为'私有'Set-NetConnectionProfile -interfacealias“ vEthernet(DockerNAT)” -NetworkCategory Private的步骤。
斯利姆先生

54

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


2
在断开与VPN的连接后,我也解决了该问题,当然,直到用尽所有其他可能性之后我才尝试。
Kirkaiya

我搜索了一天的时间,只是需要断开与VPN的连接。。谢谢!
HELPME

1
简单的解决方案..谢谢!
MilanYadav '19

1
谢谢!我忘记了在Windows启动时自动启动的VPN客户端。
法比奥福尔摩沙(Fabio Formosa),

谢谢!我遵循了不同的指令,但没有成功,但是一旦断开与VPN的连接,它就可以正常工作!!!
梅厄

27

遇到此错误时,我没有使用任何第三方防火墙。我坚信这是Windows防火墙问题,尽管禁用Windows防火墙对我不起作用。经过大量研究,我终于找到了该博文:Windows 10上的Docker错误:防火墙阻止了文件共享...

它结束了具有内置的Windows防火墙做。

修复

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

完美地为我工作,谢谢!
LewisCheng-MSFT

显然,这也对我有用。我检查了Windows防火墙,并且已经有了正确的规则,可能是docker本身预先安装的。
Davide Inglima '17

很高兴知道这为何有效以及该问题的真正根本原因是什么。似乎经常发生。
杰森·罗

问题是系统重新启动后您必须再次执行
AFD

@AFD,有趣,我没有那个问题。
jiminikiz

22

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

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

至此,我能够在Docker设置中重新共享C驱动器。我不知道为什么这行得通,但是这不是防火墙问题,已经有DockerSmbMount条目。


哇,这是一个令人失望的错误。.我整天都在搜索谢谢
-FAjir

这几乎起作用了。我没有收到防火墙消息,但复选框没有保持选中状态!
jokab

17

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

图片1

图片2


1
为我工作!但是用户界面在Kaspersky ES 10中看起来有所不同。可以这样找到:设置选项卡>选择左侧的“防火墙”>单击按钮“网络数据包规则”>选择“本地TCP连接”>选择顶部的编辑
Simon

1
而不是从列表中删除445,而是将“操作”从“阻止”更改为“按应用程序规则”,它对我有用。因此,我想从“本地服务(TCP)”中删除445并创建一个新动作“按应用程序规则”的“ Docker SMB安装”规则也应该可行。
Jimson Kannanthara James

这个为我工作。我不得不暂停卡巴斯基,然后尝试在适用于Windows的Docker上启用共享驱动器。
痢疾

感谢您分享卡巴斯基解决方案。它为我工作。
namit

我有同样的问题,其次matthewhorne.me/...
安东尼O.

11

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

在PowerShell中运行以下命令:

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

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


对我来说就像一个魅力。在Windows 10 v10.0.17763版本17763,Docker v18.09.2版本6247962和运行Norton Security Suite的Powershell 6会话中运行命令。
亚当

9

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

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


当“文件打印共享”建议不起作用时,这对我有用。Anyconnect Allow local (LAN) access when using VPN已经被检查过,所以我取消选中它,断开连接,重新检查该选项,然后重新连接到VPN。然后,适用于Windows的Docker根据需要应用了驱动器共享。
亚伦

不适用于我,我不得不断开Cisco AnyConnect的共享驱动器。有任何想法吗?
杰克

显然,我们的企业网络战士已经获得了0.0.0.0/0的保护,所以我很不走运:-(
杰克

8

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

如果已经这样做,即使在VPN处于活动状态时,它也应该可以工作。

NordVPN客户端


2
谢谢!这为我解决了。我被困了两个星期!
user3034 '19

1
非常感谢!花费了数小时来处理网络设置,这对我来说唯一有效!
AnotherShruggingPhysicist

6

这取决于您安装了什么防火墙。就我而言,我确实禁用了内置Windows防火墙,并且我正在使用ESET Smart Security,因此我的规则如下所示:

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

在此处输入图片说明

  • 按照docs的含义正确设置端口445

在此处输入图片说明

  • 设置远程IP地址:

在此处输入图片说明

也许这不是答案,因为它与Windows防火墙无关,但可以为您提供操作提示。


感谢Reynier-在Windows防火墙等效版本中,我尽可能地按照您显示的内容进行操作。-常规选项卡=“启用”-协议和端口选项卡= TCP协议和本地端口= 445-范围选项卡=远程ip = 10.0.75.2,但收到相同的错误消息。允许所有端口和IP地址-相同的结果。另一个规则优先吗?
Ribeye

如果您添加一些屏幕截图会更好,因为我讨厌Windows防火墙,并且从来没有对其进行过处理……
ReynierPM

如何选择“系统”应用程序?
库兹迪·马特(KüzdiMáté)

无需添加“系统”应用程序,但需要确保DockerNAT网络在IP范围为10.0.75.1/24的已知网络中受信任
Miguel Febres

我们没有使用ESET:/
Ionel Lupu

4

以上都不对我有用。

最终的窍门是打开“ vEthernet(DockerNAT)”网络的属性,并在“网络”选项卡下列表底部的“ Hyper-V可扩展虚拟交换机”框中打钩。

不知道这是不是实际的解决方法,还是只是以某种方式为我重置了网络适配器,但它确实有效!


4

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

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

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

例如,对于我来说,我从10.0.75.0(与10.0.0.0/8重叠)更改为172.31.0.0/28。 在此处输入图片说明


3

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

  • 添加防火墙规则(适用于我的Norton Security)
  • 使网络私有
  • 共享驱动器

我已经在http://kajabity.com/2017/08/unblock-docker-for-windows-firewall-issues-with-host-volumes/上写了完整的解释


1
“尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。”
麦迪

对我而言,这里的关键是将docker网络设为私有。
迈克·卡伦

3

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

然后,我曾尝试通过几个建议解决此问题,但在尝试重置“共享驱动器”下方的凭据后,我无法解决该问题,此问题已解决。

因此,如果您愿意,可以尝试执行以下操作-

在此处输入图片说明


3

每个人发布的所有内容都对我不起作用。

这个DID。

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

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

啊。真的希望对您有所帮助!


禁用特定连接的防火墙(dockerNat)帮助。非常感谢你!
马夫

请说明您究竟如何针对特定的网络适配器/连接禁用Windows Defender防火墙?
火神乌鸦

3

就我而言,我在具有高级安全性的Windows Defender防火墙禁用了 “阻止TCP 445” ,它可以正常工作。然后在Docker上设置共享驱动器后再次启用它。

块TCP 445的设置

共享驱动器的设置


我刚刚意识到,当NSA黑客工具泄漏时,我本人又添加了此防火墙规则。谢谢!
Danny Z

2

我对F-secure有同样的问题,DeepGuard阻止了Docker服务。我的解决方案是:

打开F安全客户端,然后单击“ 任务

在此处输入图片说明

选择“ 允许程序启动

在此处输入图片说明

从列表“ com.docker.service”中选择,然后按“ 删除

在此处输入图片说明

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

此处的故障排除指南也非常好:错误:防火墙阻止Windows与容器之间的文件共享


2

我在防火墙上遇到了同样的问题,不允许我共享C驱动器。我尝试了上面列出的所有解决方案,但对我没有任何帮助。然后我从机器上完全卸载了docker Control Panel\Programs\Programs and Features -> select Docker for Windows -> Uninstall
然后转到docker网站并单击Get Docker for Windows (Stable)
之后,我就可以共享驱动器C


1
我已经尝试了其他所有方法,只有此解决方案对我有用。谢啦!
Charis Moutafidis

2

对于AVG Internet Security,启用防火墙设置下的“ Internet连接共享模式 ”对我有用。

在此处输入图片说明


2

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

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

不知道该选项已经存在多长时间了。我目前正在使用Win 10 Pro 1709 16299.402。


1.打开公共网络的特定防火墙设置 打开公共网络的特定防火墙设置

2.取消选中此复选框 取消选中此复选框


2

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

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

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明


2

2020年1月25日

看来,这是旧版本中的问题,我安装了上一个版本:

Docker version 19.03.5, build 633a0ea

它无需任何配置即可对我有效。

在此处输入图片说明


1

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

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

我比较幸运的是将功能添加到脚本中,而不是编辑脚本并将“内部”更改为“私有”。


1

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


如果您同时需要(VPN AnyConnect和Docker),请参阅我的评论stackoverflow.com/a/58406873/9064636
Averell,

1

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

什么都没有为我工作。

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

这是对我有用的Docker骇客。添加--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失败:端口已分配


1

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

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

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

Users don’t have to expose the Samba port, and therefore do not experience issues related to IT firewall or the drive-sharing policy.
There is no need to provide user credentials to Docker Desktop. File access rights are automatically enforced when accessing mounted folders through containers.

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

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



0

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


0

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

作为“试错”的一部分,我做了文章上列出的所有其他事情,但没有成功..但是最后一步做到了..恢复到原来的状态255.255.255.240不会破坏良好的循环。

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

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

Docker Desktop edge, 2.0.4.1 (34207)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.