无法从 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 服务器,我设法使一切正常。
上下文
- 我从 https://code.quarkus.io/ 获得了一个 quarkus 应用程序模板,其中包含一个名为
mvnw
的 shell 文件,我可以通过执行 [=12] 来启动开发服务器=] 在主机终端中。
- 我现在可以在浏览器中转到
http://localhost:9000
。我也可以做 curl localhost:9000
并看到我得到了 HTML/CSS/JS 代码。
问题
我无法从 docker 容器中访问 quarkus 服务器。我试过:
- 运行 一个基础
curl
容器:docker run --rm -it --name curl --entrypoint sh curlimages/curl:latest
- 我在容器内尝试以下操作:
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 容器的可靠方法
系统信息
- OS: Windows 11 21H2 22000.493 ,但我在 WSL2 (Ubuntu 20.04.3 LTS) 中做所有事情。
- CPU: 英特尔酷睿 i7-10850H
您可以尝试在您的 wsl2 上禁用 IPV6 并重复您的测试吗?
$ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
我遇到了类似的问题,这解决了我的问题。
这不是 From inside of a Docker container, how do I connect to the localhost of the machine? 的副本。我已经尝试了上述线程中的建议,并且我知道如何解决这个问题。这个问题似乎是 quarkus 应用程序特有的。除了 quarkus 服务器,我设法使一切正常。
上下文
- 我从 https://code.quarkus.io/ 获得了一个 quarkus 应用程序模板,其中包含一个名为
mvnw
的 shell 文件,我可以通过执行 [=12] 来启动开发服务器=] 在主机终端中。 - 我现在可以在浏览器中转到
http://localhost:9000
。我也可以做curl localhost:9000
并看到我得到了 HTML/CSS/JS 代码。
问题
我无法从 docker 容器中访问 quarkus 服务器。我试过:
- 运行 一个基础
curl
容器:docker run --rm -it --name curl --entrypoint sh curlimages/curl:latest
- 我在容器内尝试以下操作:
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 容器的可靠方法系统信息
- OS: Windows 11 21H2 22000.493 ,但我在 WSL2 (Ubuntu 20.04.3 LTS) 中做所有事情。
- CPU: 英特尔酷睿 i7-10850H
您可以尝试在您的 wsl2 上禁用 IPV6 并重复您的测试吗?
$ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
我遇到了类似的问题,这解决了我的问题。