2017-07-27 101 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

然后检查你的防火墙。这来自不同的桥,它不会是本地主机,并会触发你的防火墙。你没有写任何其他我写的东西,既没有映射主机名也没有其他东西。尽管如此,好看 –