我是Docker的新手,我可能没有在文档中找到正确的位置,因为我无法找到一种方法来做我所说的"反向EXPOSE"。
例如,我有一个EXPOSE 80
的Web应用程序。同一个应用程序正在使用postgresql数据库。当我在本地开发它时工作正常,因为我连接到localhost:5432
但是当我对应用程序进行容器化时,它会说"连接被拒绝"。我认为Docker的理念是尽可能地容器化并使这些容器通过docker网络相互通信。但我很好奇是否可以说我的容器中的localhost:5432
实际上是指托管我的容器的实际机器上的端口5432。
答案 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
。