2017-01-09 119 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

有人知道如果有更新嗎?我仍然在從本地主機訪問服務結構中的容器時遇到問題 –