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

Cannot reach quarkus application on host from inside docker container

这不是 From inside of a Docker container, how do I connect to the localhost of the machine? 的副本。我已经尝试了上述线程中的建议,并且我知道如何解决这个问题。这个问题似乎是 quarkus 应用程序特有的。除了 quarkus 服务器,我设法使一切正常。

上下文

  1. 我从 https://code.quarkus.io/ 获得了一个 quarkus 应用程序模板,其中包含一个名为 mvnw 的 shell 文件,我可以通过执行 [=12] 来启动开发服务器=] 在主机终端中。
  2. 我现在可以在浏览器中转到 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
    • 来自顶部提到的 post 的各种其他建议,但所有连接都被拒绝

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

我想要的: 从 docker 容器

连接到主机的 quarkus 容器的可靠方法

系统信息

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

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

我遇到了类似的问题,这解决了我的问题。