如何将 HTTP 请求发送到在 docker 容器中运行的服务器?

新手上路,请多包涵

我已经设置了一个 java 应用程序,它充当 Web 服务器并处理 http 请求。我已经测试过它在容器外工作(它确实如此),但是在容器中时我的请求似乎没有得到它。

服务器监听 3971 端口,Dockerfile 如下所示:

 FROM java:8
ADD VaultServer /
EXPOSE 3971
EXPOSE 3972
ENTRYPOINT ["java", "-jar", "VaultServer.jar"]

调用根地址应该返回一些东西(通常我会发送一个 GET 到 http://localhost:3971/ )。

我尝试用 docker-machine 的 ip 地址替换“localhost”,也尝试用检查服务器正在运行的容器时获得的 ip 地址替换,但似乎都没有响应。当我调用 docker-machine 的 ip 地址时,我得到 ERR_CONNECTION_REFUSED。我还需要启用其他功能吗?

原文由 Andy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 739
1 个回答

您正在执行 EXPOSE 3972,它将端口暴露给其他 链接 的容器,但不暴露给主机

要将端口暴露给你做的主机……

 docker run -p 3972:3972 ....... etc

你也可以做…

 docker run -P

这会将 EXPOSE 公开的所有端口公开给主机(这不是默认设置 - 您必须在此处使用 -P 标志)

原文由 danday74 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题