繁体   English   中英

无法从 docker 容器内部访问主机上的 quarkus 应用程序

[英]Cannot reach quarkus application on host from inside docker container

这不是From inside of a Docker container 的副本,如何连接到机器的本地主机? . 我已经尝试了上述线程中的建议,并且我知道如何解决这个问题。 这个问题似乎是 quarkus 应用程序特有的。 除了 quarkus 服务器,我设法使一切正常。

语境

  1. 我从https://code.quarkus.io/获得了一个 quarkus 应用程序模板,其中包含一个名为mvnw的 shell 文件,我可以使用它通过执行./mvnw quarkus:dev -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=9000 -Ddebug=9001在主机终端。
  2. 我现在可以在浏览器中从 go 到http://localhost:9000 我也可以执行curl localhost:9000并看到我获得了 HTML/CSS/JS 代码。

问题

我无法从 docker 容器中访问 quarkus 服务器。 我努力了:

  1. 运行一个基本的curl容器: docker run --rm -it --name curl --entrypoint sh curlimages/curl:latest
  2. 从容器内我尝试以下操作:
    • curl host.docker.internal:9000 -> 连接被拒绝
    • curl localhost:9000 -> 连接被拒绝
    • curl (the machine host name here):9000 -> 操作超时(所有端口都会出现这种情况)
    • 使用-.network=host运行容器,并使用curl localhost:9000 -> Connection refused
    • 顶部提到的帖子中的各种其他建议,但所有连接都被拒绝

但是,我可以使用curl host.docker.internal:9001 (来自服务器的空回复)连接到 JVM 调试端口,我也可以使用host.docker.internal http 文件服务器(从主机托管)连接到似乎只有 quarkus 服务器无法连接。

我想要的:一种从 docker 容器内连接到主机的 quarkus 容器的可靠方法

系统信息

  • 操作系统: Windows 11 21H2 22000.493,但我在 WSL2 (Ubuntu 20.04.3 LTS) 中做所有事情。
  • 中央处理器:英特尔酷睿i7-10850H

您可以尝试禁用 wsl2 上的 IPV6 并重复您的测试吗?

$ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1

我有类似的问题,这为我解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM