Windows 防火墙阻止了我尝试允许 Docker for Windows 在 Windows 10 机器上共享 C:。
Windows 防火墙关闭时工作正常。当它在我得到
防火墙阻止了 Windows 和容器之间的文件共享。有关更多信息,请参阅文档。
文件说
您无需在任何其他网络上打开端口 445。默认情况下,允许从 10.0.75.2(虚拟机)连接到 10.0.75.1 端口 445(Windows 主机)。
我在试图找到如何做到这一点时“被谷歌搜索” - 有人可以建议吗?
Windows 防火墙阻止了我尝试允许 Docker for Windows 在 Windows 10 机器上共享 C:。
Windows 防火墙关闭时工作正常。当它在我得到
防火墙阻止了 Windows 和容器之间的文件共享。有关更多信息,请参阅文档。
文件说
您无需在任何其他网络上打开端口 445。默认情况下,允许从 10.0.75.2(虚拟机)连接到 10.0.75.1 端口 445(Windows 主机)。
我在试图找到如何做到这一点时“被谷歌搜索” - 有人可以建议吗?
您实际上不需要共享 C 驱动器,而只需重新安装(或者甚至可能取消选中 - 单击确定 - 然后选中)Hyper-V 虚拟网卡上的文件和打印共享服务。 见这篇文章。
此外,如果您的网络配置文件(即公共)有限制,请考虑在执行上述操作之前通过此 PowerShell 命令将“vEthernet (DockerNAT)”卡的默认“未识别网络”更改为私有:
Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
只有这个解决方案可以帮助我:
Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
我的解决方案是断开与 VPN 的连接;这导致了这个问题
遇到此错误时,我没有使用任何第三方防火墙。我确信这是一个 Windows 防火墙问题,尽管禁用 Windows 防火墙对我不起作用。经过大量研究,我终于找到了这篇博文:Windows 10 上的 Docker 错误:防火墙正在阻止文件共享...
它最终与内置的 Windows防火墙无关。
修复
- 从vEthernet (DockerNAT)网络适配器取消选中Microsoft 网络的文件和打印机共享(您可以在 Windows网络和共享中心找到该连接)。
- 重新检查并确保它已启用。
最近一次 Windows 10 更新后,我的 C 盘停止与 Docker 共享。我遇到了同样的问题,说它在尝试重新共享它时被 Windows 防火墙阻止了。
通过上述解决方案,我发现对我有用的东西比我在这个页面上看到的任何东西都简单。在Control Panel\All Control Panel Items\Network and Sharing Center的vEthernet (DockerNAT)连接上,我取消选中Microsoft Networks 的 File and Printer Sharing属性并保存设置。然后我再次检查了该属性以重新启用它并再次保存它。
此时,我可以在 Docker 设置中重新共享 C 盘。我不知道为什么会这样,但这不是防火墙问题,它已经有 DockerSmbMount 的条目。
对于域网络上的 Windows 10 计算机,在创建 Hyper-V 虚拟以太网适配器时,它被归类为公共网络。您必须将其更改为专用网络以允许更宽松的 Windows 防火墙规则,从而允许文件共享。
在 PowerShell 中运行以下命令:
Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private
如果您计算机的虚拟 Hyper-V 网络连接被称为其他名称,请更改引号中的名称。
我的问题是 Cisco Anyconnect VPN 干扰了内部 docker 网络
要解决此问题,请访问:
Cisco Anyconnect 设置 > 首选项 > 检查Allow local (LAN) access when using VPN
以上都不适合我。
最终的诀窍是打开“vEthernet (DockerNAT)”网络的属性并勾选“网络”选项卡下列表底部的“Hyper-V 可扩展虚拟交换机”框。
不确定这是否是实际修复,或者它是否只是以某种方式为我重置了网络适配器......但它有效!
每个人发布的所有内容都对我不起作用。
确实如此。
我安装了 EDGE 版本。然后我去了 WINDOWS DEFENDER 并禁用了 DOCKER NAT 的防火墙。(不是我实际的以太网适配器,只是 docker nat)
一旦我以这种方式禁用 Windows 防御者/防火墙,它就可以正常工作。
啊。真的希望对你们中的一些人有所帮助!
我遇到了同样的问题并尝试了所有修复 - 事实证明,不止一个是必要的:
我已经在http://kajabity.com/2017/08/unblock-docker-for-windows-firewall-issues-with-host-volumes/写了一个完整的解释
我对 F-secure 也有同样的问题,DeepGuard 阻止了 Docker 服务。我的解决方案是:
打开 F-secure 客户端并点击“任务”
选择“允许程序启动”
从列表“com.docker.service”中选择并按“删除”
之后重启Docker 客户端并尝试申请文件共享。
这里也是非常好的故障排除指南:错误:防火墙正在阻止 Windows 和容器之间的文件共享
我遇到了同样的问题,防火墙不允许我共享我的 C 盘。我尝试了上面列出的所有解决方案,但对我没有任何帮助。然后我从我的机器上完全卸载了 dockerControl Panel\Programs\Programs and Features ->
select Docker for Windows -> Uninstall
然后转到docker 网站并单击Get Docker for Windows (Stable)
之后我就可以共享驱动器 C
简而言之,使用 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 的风险比较低。或者您可以等待下一个稳定版本,以避免所有这些防火墙问题。
如果上述方法都不起作用,请确保您没有连接到VPN。这正是发生在我身上的事情,我使用 Cisco AnyConnect 客户端连接到 VPN,还要确保在 docker 设置中设置静态 DNS。
这个(下面的链接)似乎是迄今为止我发现的最好的解决方法。它在重新启动后保持不变。最好在这里解释: https ://gist.github.com/biggyspender/8b5b2ed9ff63de31045d41304e3915b3
vEthernet 网络接口似乎是在每次系统启动时动态创建的,它是在“公共”组中创建的,而不是在“私人”组(它工作的地方)中创建的。Docker 启动脚本之一(在上面的链接中调用)中的编辑自动执行上面 David Tesar 指出的 powershell 命令/修复......
我更幸运地将函数添加到脚本中,而不是编辑脚本并将“内部”更改为“私人”。
我尝试了此处和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 失败:端口已分配
启用选项 Hyper-V 可扩展虚拟交换机对我有用。其他解决方案对我不起作用。我在HyperV Virtual Switch Manager - DockerNAT - Extensions - Virtual Switch Extensions 面板中更改了配置。
我让它工作的唯一方法是在我的 PC 上创建一个本地用户,并在共享时将其用作凭据。
对我做了什么(经过几个小时的试错)将子网掩码从更改255.255.255.240
为255.255.255.0
(不应该改变任何东西)。
作为试验-n-错误的一部分,我已经完成了文章中列出的所有其他事情,但没有任何成功..但最后一步做到了..并且恢复255.255.255.240
并不会破坏良好的循环。
我承认,这没有任何意义......但它可能与仅由网络更改触发的内部状态有关。
无论如何,如果我只帮助了一个人,那么努力是值得的。
Docker Desktop edge, 2.0.4.1 (34207)
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.
对于那些无法通过任何方式解决此问题的人,您可以尝试以下操作:手动将驱动器映射到 docker 主机:
https://github.com/docker/for-win/issues/466#issuecomment-416682825
研究在这里:https ://github.com/docker/for-win/issues/466#issuecomment-398305463
另一种解决方案!我不确定我是如何解决这个问题的,但我认为是下面的方法成功了。
上面的建议都不适合我,但是卸载 Docker Desktop(重启 PC)并重新安装 Docked 最终解决了这个问题。