2017-07-27 97 views
0

我試圖部署具有搬運工,撰寫一些容器到一個新的CentOS7 VM(最新版本泊塢窗):泊塢窗容器無法連接到主機

  • ASP.NET應用
  • 蒙戈
  • Nginx的反向代理
  • 允許加密的Sidecar爲Nginx的

容器之間的連接工作正常。但是我的ASP.NET應用程序必須使用公共域名向自己發出請求。它失敗了,當我在容器內發出一個捲曲請求時,它將以No route to Host失敗。注意:我沒有使用本地主機等。

我發現另一篇文章:Docker container cannot connect to host machine: No route to host

這似乎是在這種情況下,防火牆的問題。所以我也嘗試添加防火牆規則,但沒有幫助。

回答

0

假設您的ASP網絡容器正在運行的容器X確實需要使用域與您的應用程序聯繫。假設,您可以在開發或domain.tld中使用domain.dev,那麼您可以在開始時(或以docker撰寫方式)將「host」參數傳遞給容器,以將該域綁定到localhost,因此--host domain.tld :127.0.0.1或容器的實際IP(私有IP)。

後者需要您實際使用碼頭網絡併爲每個容器在碼頭網絡中提供一個靜態IP,以便在啓動它之前知道ASP網絡容器IP。你當然可以做一些碼頭插座安裝+碼頭檢查容器中的魔法,但這對於開發目的來說遠非誇大其詞。

參考文獻: - 泊塢窗主機條目:https://docs.docker.com/engine/reference/run/#managing-etchosts - 泊塢窗網絡https://docs.docker.com/engine/reference/run/#network-settings

而且在泊塢窗撰寫: - 泊塢窗主機條目:https://docs.docker.com/compose/compose-file/#extra_hosts - 網絡:https://docs.docker.com/compose/compose-file/#networks

提示:我強烈建議你使用docker-compose。

替代方式: 您也可以使用service-name作爲容器中的域,因爲這會自動解析爲容器IP,因此假設您的ASP網絡容器在docker-compose文件中被命名爲「app」 (服務),您可以使用容器中的應用程序訪問它。

+0

正如我所說我必須向容器本身發出請求,所以我可以使用本地主機。但它不能解釋問題。 – SebastianStehle

+0

然後檢查你的防火牆。這來自不同的橋,它不會是本地主機,並會觸發你的防火牆。你沒有寫任何其他我寫的東西,既沒有映射主機名也沒有其他東西。儘管如此,好看 –