150

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

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

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

文件说

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

我在试图找到如何做到这一点时“被谷歌搜索” - 有人可以建议吗?

4

37 回答 37

153

您实际上不需要共享 C 驱动器,而只需重新安装(或者甚至可能取消选中 - 单击确定 - 然后选中)Hyper-V 虚拟网卡上的文件和打印共享服务。 见这篇文章。

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

Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
于 2017-05-10T23:11:22.090 回答
74

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

这就是我所做的:


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

点击设置

第二步:点击网络保护

点击网络保护

第 3 步:单击故障排除向导

单击故障排除向导

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

找到连接

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

点击取消阻止

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

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


PS:这是我的第一篇文章,如有错误,请见谅。

于 2017-03-22T15:05:04.840 回答
63

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

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

我的解决方案是断开与 VPN 的连接;这导致了这个问题

于 2017-07-14T08:45:17.237 回答
27

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

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

修复

  1. vEthernet (DockerNAT)网络适配器取消选中Microsoft 网络的文件和打印机共享(您可以在 Windows网络和共享中心找到该连接)。
  2. 重新检查并确保它已启用。
于 2017-04-20T19:05:01.973 回答
22

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

通过上述解决方案,我发现对我有用的东西比我在这个页面上看到的任何东西都简单。在Control Panel\All Control Panel Items\Network and Sharing CentervEthernet (DockerNAT)连接上,我取消选中Microsoft Networks 的 File and Printer Sharing属性并保存设置。然后我再次检查了该属性以重新启用它并再次保存它。

此时,我可以在 Docker 设置中重新共享 C 盘。我不知道为什么会这样,但这不是防火墙问题,它已经有 DockerSmbMount 的条目。

于 2017-05-13T15:12:22.403 回答
17

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

图 1

图 2

于 2017-06-30T03:26:44.510 回答
11

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

在 PowerShell 中运行以下命令:

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

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

于 2018-10-09T16:56:34.893 回答
9

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

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

于 2018-12-10T11:33:59.873 回答
8

正如另一个答案中所述,Docker 不能很好地使用 VPN。如果您使用的是 Nordvpn,则必须禁用"Invisibility on LAN"和可能的"Internet Kill Switch"

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

NordVPN 客户端

于 2018-10-11T18:25:22.003 回答
6

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

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

在此处输入图像描述

  • 按照文档含义中的说明正确设置端口445

在此处输入图像描述

  • 设置远程IP地址:

在此处输入图像描述

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

于 2017-02-13T13:29:55.940 回答
4

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

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

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

例如,就我而言,我从 10.0.75.0(与 10.0.0.0/8 重叠)更改为 172.31.0.0/28。 在此处输入图像描述

于 2019-10-16T06:19:50.080 回答
4

以上都不适合我。

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

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

于 2017-12-06T14:13:34.117 回答
4

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

阻止 TCP 445 的设置

共享驱动器的设置

于 2018-06-19T10:08:10.683 回答
3

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

确实如此。

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

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

啊。真的希望对你们中的一些人有所帮助!

于 2017-12-26T08:04:32.100 回答
3

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

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

因此,如果您愿意,可以尝试这样做-

在此处输入图像描述

于 2017-11-30T09:44:28.590 回答
3

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

  • 添加防火墙规则(我的 Norton Security)
  • 将网络设为私有
  • 共享驱动器

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

于 2017-08-05T00:13:21.780 回答
3

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

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

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


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

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

于 2018-04-29T07:52:30.763 回答
2

2020 年 1 月 25 日

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

Docker version 19.03.5, build 633a0ea

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

在此处输入图像描述

于 2020-01-25T18:44:32.200 回答
2

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

在此处输入图像描述

于 2018-01-02T19:05:48.953 回答
2

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

打开 F-secure 客户端并点击“任务

在此处输入图像描述

选择“允许程序启动

在此处输入图像描述

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

在此处输入图像描述

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

这里也是非常好的故障排除指南:错误:防火墙正在阻止 Windows 和容器之间的文件共享

于 2017-09-30T10:28:21.517 回答
2

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

于 2017-12-15T17:30:04.627 回答
2

使用卡巴斯基安全软件,如果您将vEthernet (DockerNAT)网络适配器类型更改为Trusted network.

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

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

于 2019-08-26T04:41:22.380 回答
2

简而言之,使用 Edge 版本。

自 2.1.5.0 (2019-11-04) 起适用于 Windows 的 Edge 版本具有文件共享的新实现,无需修改防火墙 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 的风险比较低。或者您可以等待下一个稳定版本,以避免所有这些防火墙问题。

于 2019-12-28T21:06:05.170 回答
1

如果上述方法都不起作用,请确保您没有连接到VPN。这正是发生在我身上的事情,我使用 Cisco AnyConnect 客户端连接到 VPN,还要确保在 docker 设置中设置静态 DNS。

于 2019-07-17T18:39:00.507 回答
1

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

vEthernet 网络接口似乎是在每次系统启动时动态创建的,它是在“公共”组中创建的,而不是在“私人”组(它工作的地方)中创建的。Docker 启动脚本之一(在上面的链接中调用)中的编辑自动执行上面 David Tesar 指出的 powershell 命令/修复......

我更幸运地将函数添加到脚本中,而不是编辑脚本并将“内部”更改为“私人”。

于 2019-01-30T19:16:44.477 回答
1

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

没有什么对我有用。

我在 docker 容器上运行我的开发环境,而在企业 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 失败:端口已分配

于 2019-12-23T15:44:28.080 回答
0

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

在此处输入图像描述

于 2019-07-15T07:59:09.450 回答
0

启用选项 Hyper-V 可扩展虚拟交换机对我有用。其他解决方案对我不起作用。我在HyperV Virtual Switch Manager - DockerNAT - Extensions - Virtual Switch Extensions 面板中更改了配置。

于 2019-06-13T09:07:10.817 回答
0

我让它工作的唯一方法是在我的 PC 上创建一个本地用户,并在共享时将其用作凭据。

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

于 2020-01-09T15:45:32.380 回答
0

对我做了什么(经过几个小时的试错)将子网掩码从更改255.255.255.240255.255.255.0(不应该改变任何东西)。

作为试验-n-错误的一部分,我已经完成了文章中列出的所有其他事情,但没有任何成功..但最后一步做到了..并且恢复255.255.255.240并不会破坏良好的循环。

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

无论如何,如果我只帮助了一个人,那么努力是值得的。

Docker Desktop edge, 2.0.4.1 (34207)
于 2019-05-16T13:57:28.073 回答
0

我的解决方案:

我正在使用 QuickHeal Antivirus,按照这些步骤操作它对我有用。

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

步骤#2选择高级设置 第2步

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

于 2019-11-07T12:29:19.353 回答
0

I found it quite easy. Just go to you network connections. You can go Control Panel/Network and Sharing. You will find various connections. Search for Docker connection. Select which ever is default. After selecting network, go to Properties. In the properties section enable the option Hyper-V Extensible Virtual Switch. This will help virtual container to use network card.

于 2019-01-16T10:14:55.680 回答
0
  1. 在 windows 上打开 windows 防御者防火墙设置。
  2. 打开链接“Windows Defender 防火墙属性”
  3. 选择私人档案标签
  4. 按“受保护的网络连接”的自定义按钮
  5. 取消选中“vEthernet (DockerNAT)”
  6. 返回 dockers 桌面并应用共享

分步说明图片

于 2019-10-23T15:17:20.717 回答
0

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

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

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

于 2018-09-11T08:38:58.577 回答
0

另一种解决方案!我不确定我是如何解决这个问题的,但我认为是下面的方法成功了。

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

上面的建议都不适合我,但是卸载 Docker Desktop(重启 PC)并重新安装 Docked 最终解决了这个问题。

于 2020-02-02T19:42:34.203 回答