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”您可以使用容器中的应用程序访问它。