Docker容器无法连接到主机

我试图用docker-compose将一些容器部署到一个新的CentOS7 VM(最新的docker版本):

  • ASP.NET应用程序
  • 蒙戈
  • Nginx反向代理
  • 让encryption为Nginx Sidecar

容器之间的连接工作正常。 但是我的ASP.NET应用程序必须使用公共域名向自己发出请求。 它失败了,当我在容器内发出一个curl请求时,它会失败,并且No route to Host 。 注意:我没有使用本地主机等。

我发现另一个post: Docker容器无法连接到主机:没有路由到主机

在这种情况下,这似乎是防火墙问题。 所以我也尝试添加防火墙规则,但没有帮助。

假设您的ASPnetworking容器在运行的容器X,确实需要使用域来联系您的应用程序。 假设你在开发中使用domain.dev,或者在domain.tld中使用domain.dev,你可以在启动时(或者在docker compose方式)将“host”parameter passing给容器来绑定这个域到localhost,所以–host domain.tld :127.0.0.1或者容器的实际IP(私有的)。

后者需要您实际使用dockernetworking,并为每个容器在dockernetworking中提供一个静态IP,因此在启动它之前就知道ASPnetworking容器IP。 你当然可以做一些dockersockets装载+docker检查在容器中的魔术,但这是远远超出了发展的目的。

参考: – docker主机条目: https ://docs.docker.com/engine/reference/run/#managing-etchosts – dockernetworkinghttps://docs.docker.com/engine/reference/run/#network-settings

并在docker组成: – docker主机条目: https : //docs.docker.com/compose/compose-file/#extra_hosts – networking: https : //docs.docker.com/compose/compose-file/#networks

提示:我会强烈build议你使用docker-compose。

另外一种方法:你也可以使用service-name作为容器中的域名,因为这会自动parsing为容器IP,所以假设你的ASPnetworking容器在docker-compose文件(服务)中被命名为“app”您可以使用容器中的应用程序访问它。