2017-01-09 165 views
0

我在我的开发虚拟机本地部署了一个Windows容器,它只包含一个简单的MVC应用程序来测试功能。我可以部署它很好,我得到的URI为http://localhost:30001/服务的Uri,当我从我的主机导航到该URL时工作正常,但当我位于拥有该容器的虚拟机内时,我无法访问它。服务结构容器 - 无法访问集群内的服务

Laptop (Can access URL from here)

^

Windows Server 2016 VM (cannot access from here)

^

Container with manually packaged MVC app using the microsoft/aspnet image

后,我已经部署了SF应用程序,我可以通过分配的IP和端口的访问MVC应用程序Docker(通过使用docker inspect),我也指定了这个端口8745我的AppManifest.xml

当我启动一个示例应用程序(如字母表示例)时,我可以访问虚拟机内的端点。是否有与容器不相关的事情?由于分区解析器向我提供了在集群中无法访问的URL,因此在制作网关无状态服务时这是一个很大的问题。

编辑: 忘了提及我的防火墙也在我的开发虚拟机内被禁用。

回答

0

我认为你遇到this问题。除非使用容器IP地址,否则无法访问在本地主机上运行的容器。

在当前版本中,您不能使用http://localhost从容器主浏览 您的网站。这是因为WinNAT中已知的行为 ,并且将来会解决。在此之前, 您需要使用容器的IP地址。

+0

这很奇怪。Service Fabric将端点发布为“http:// localhost:30001”。这是否意味着我无法提供服务来与容器进行通信?或者有什么方法通过命名服务获取该容器的IP地址? – Ryan

+0

在生产群集上,您可以使用反向代理在容器之间进行通信。这样您的流量就会流经负载均衡器。 (不理想)。更多信息在这里:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-deploy-container我不认为你可以得到这个工作在开发群集,没有修复WinNAT。 – LoekD

+0

有人知道如果有更新吗?我仍然在从本地主机访问服务结构中的容器时遇到问题 –

相关问题