连接到Docker容器连接被拒绝 – 但容器正在运行
我正在运行2个spring引导应用程序:一个客户端和rest-api。 客户端通信到与mongodb数据库通信的rest-api。 所有3层都在docker集装箱内运行。
我通常启动容器,在dockerfile中指定暴露的端口,并将它们映射到主机上的端口,如:-p 7070:7070,其中7070是Dockerfile中公开的端口。
当我通过java -jar [application_name.war]
命令运行应用java -jar [application_name.war]
,应用程序正常工作,它们都可以通信。
但是,当我在Docker容器中运行应用程序时,我得到连接拒绝错误,例如当客户端尝试连接到rest-api时,我在http:// localhost:7070处得到连接拒绝错误。
但是, docker ps
命令显示容器都在运行,并且正在侦听已经暴露的映射端口。
我不知道为什么容器没有意识到其他容器正在运行并在其端口上侦听。
这与iptables有什么关系?
任何帮助表示赞赏。
谢谢
编辑1:当运行在容器内的应用程序在我的机器上正常工作,他们不会抛出任何连接拒绝错误。 错误只发生在特定的不同机器上。
我用容器链接来解决这个问题。 确保在运行时将--link <name>:<alias>
添加到要链接的容器中。 <name>
是要链接到的容器的名称, <alias>
将是Spring的application.properties文件中的条目的主机/域。
例:
spring.data.mongodb.host=mongodb
如果运行时提供的别名是'mongodb':
--link myContainerName:mongodb