连接到Docker容器连接被拒绝-但容器正在运行

连接到Docker容器连接被拒绝-但容器正在运行,docker,spring-boot,dockerfile,ports,connection-refused,Docker,Spring Boot,Dockerfile,Ports,Connection Refused,我正在运行两个spring引导应用程序:一个客户端和RESTAPI。客户端与RESTAPI通信,RESTAPI与mongodb数据库通信。所有3层都在docker容器内运行 我启动容器,通常指定dockerfile中公开的端口,并将它们映射到主机上的一个端口,例如:-p 7070:7070,其中7070是dockerfile中公开的端口 当我通过java-jar[application\u name.war]命令运行应用程序时,应用程序运行良好,它们都可以通信 但是,当我在Docker容器中运行

我正在运行两个spring引导应用程序:一个客户端和RESTAPI。客户端与RESTAPI通信,RESTAPI与mongodb数据库通信。所有3层都在docker容器内运行

我启动容器,通常指定dockerfile中公开的端口,并将它们映射到主机上的一个端口,例如:-p 7070:7070,其中7070是dockerfile中公开的端口

当我通过
java-jar[application\u name.war]
命令运行应用程序时,应用程序运行良好,它们都可以通信

但是,当我在Docker容器中运行应用程序时,会出现连接被拒绝错误,例如当客户端尝试连接到RESTAPI时,会出现连接被拒绝错误

但是命令
docker ps
显示容器都在公开和映射的端口上运行和侦听

我不知道为什么这些容器没有意识到其他容器正在运行并监听它们的端口

这和iptables有什么关系吗

感谢您的帮助

谢谢


编辑1:在容器中运行的应用程序在我的机器上运行良好,并且不会抛出任何连接拒绝错误。错误只发生在特定的不同机器上。

我使用容器链接来解决此问题。确保在运行时将
--link:
添加到要链接的容器中
是要链接到的容器的名称,
将是Spring的application.properties文件中条目的主机/域

例如:

spring.data.mongodb.host=mongodb
如果在运行时提供的别名是“mongodb”:

--link myContainerName:mongodb

使用
docker exec-it容器\u id bash进入容器,并像在任何系统上一样调试它,例如
netstat-an
是否显示预期结果?“仅在特定的不同机器上发生”。你并没有让诊断变得容易。为什么这台机器不同?它是一个ec2实例,在那里不工作。我还将AWS安全组配置为允许在应用程序侦听的端口上进行连接。我将尝试将sshing放入容器@user2915097,当我进入容器时,它会显示“netstat:command not found”,您如何引用依赖项?如果您使用的是
localhost:
它就无法工作,因为您的所有容器都将获得不同的地址。要么公开所有端口并按主机地址引用,要么更好地使用容器链接。请回答您自己的问题。