Docker Container无法连接到主机网络上的IP

时间:2017-07-11 15:29:41

标签: docker spring-boot netflix-eureka docker-container

我有一个由三个小型Spring Boot应用程序组成的系统,每个应用程序都有不同的用途,包含REST端点。这三个应用程序适用于所有相同的数据库(MariaDB)。现在,该系统作为四个独立的码头工作。三个应用程序的三个docker容器,以及MariaDB的第四个容器(基于MariaDB Docker镜像)。所有三个应用程序容器都使用--link网络模式连接到数据库容器。

每个app docker都是使用相同的图片启动的:

docker run -i -t -p 8080:8080 --link mariadb:mariadb javaimage /bin/bash

此泊坞窗系统目前按预期工作。这三个应用程序都可以调用MariaDB,通过调用http://localhost:8080/pathToEndpoint可以通过REST调用从主机访问每个应用程序。该项目最近扩大了,并增加了新的要求。我们使用Netflix Eureka作为服务查询点,将来有助于将这些Docker部署到任何地方,只需对调用Docker的软件进行最少的更改即可。 Netflix Eureka要求我有效地检查"当应用程序启动时。这一切都由Spring Boot本身处理,因此当应用程序启动时,这将检查"是启动过程的一部分。 Eureka服务器与主机位于同一网络上,目前正通过IP地址访问。如果运行此Eureka签入组件的Spring Boot应用程序直接在主机上启动,则一切都按预期工作。该应用程序成功调用Eureka服务器并通知应用程序存在。如果我在同一主机上的Docker容器中运行相同的应用程序,则会因拒绝连接而失败。经过调查,我发现我甚至无法从Docker容器中ping掉Eureka服务器的ip地址,解释了它失败的原因。我继续进一步测试什么功能和不功能,并发现我可以ping谷歌外部网站没有问题,但当我尝试从Docker容器中ping它们时,我的网络服务器的任何内部都无法访问

因此我的问题是,我缺少什么网络配置导致这个?我认识到Docker有很多网络配置选项,但我找不到有类似问题的人。

感谢任何帮助。谢谢!

0 个答案:

没有答案