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

Connecting to Docker container connection refused - but container is running

我正在 运行ning 2 spring 启动应用程序:一个客户端和 rest-api。客户端与 rest-api 通信,rest-api 与 mongodb 数据库通信。所有 3 层都在 运行 容器内 docker。

我启动容器通常在 docker 文件中指定公开的端口并将它们映射到主机上的端口,例如:-p 7070:7070,其中 7070 是公开的端口Docker文件。

当我通过 java -jar [application_name.war] 命令 运行 应用程序时,应用程序工作正常,它们都可以通信。

但是,当我 运行 应用程序在 Docker 容器中时,我收到连接被拒绝的错误,例如当客户端尝试连接到 rest-api 我得到一个http://localhost:7070 处的连接被拒绝错误。

但是命令 docker ps 显示容器都在 运行ning 并侦听暴露和映射的端口。

我不知道为什么容器无法识别其他容器正在 运行正在监听它们的端口。

这与 iptables 有什么关系吗?

感谢任何帮助。

谢谢

编辑 1:运行 容器内的应用程序在我的机器上工作正常 ,并且它们不会抛出任何连接被拒绝的错误。该错误仅发生在该特定的不同机器上。

我用容器 linking 来解决这个问题。确保在 运行 时将 --link <name>:<alias> 添加到您想要 link 的容器中。 <name> 是您要 link 到的容器的名称,<alias> 将是 Spring 的 application.properties 中条目的 host/domain文件。

示例:

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

--link myContainerName:mongodb