如何将端口EXPOSE反转为容器?

时间:2018-04-25 14:26:35

标签: docker networking port

我是Docker的新手,我可能没有在文档中找到正确的位置,因为我无法找到一种方法来做我所说的"反向EXPOSE"。

例如,我有一个EXPOSE 80的Web应用程序。同一个应用程序正在使用postgresql数据库。当我在本地开发它时工作正常,因为我连接到localhost:5432但是当我对应用程序进行容器化时,它会说"连接被拒绝"。我认为Docker的理念是尽可能地容器化并使这些容器通过docker网络相互通信。但我很好奇是否可以说我的容器中的localhost:5432实际上是指托管我的容器的实际机器上的端口5432。

2 个答案:

答案 0 :(得分:1)

容器内的Localhost不是您的docker主机,它是容器内的命名空间网络。因此,如果您尝试与容器内的localhost或127.0.0.1进行通信,则它只会与在该容器内运行的其他应用程序进行通信。

相反,您应该使用主机的可路由IP,以便请求可以从容器中传出并返回到docker主机接口,以到达在容器外部运行的应用程序。

答案 1 :(得分:0)

当应用在容器中运行时,您应该使用IP:5432,例如主持人的192.168.99.100:5432而不是localhost

在容器中使用localhost时,它指的是容器的localhost (127.0.0.1)而不是容器中的rm -rf /usr/lib/node_modules/composer-cli