This is not a duplicate of From inside of a Docker container, how do I connect to the localhost of the machine?. I have already attempted the suggestions in the aforementioned thread, and I know how to fix this problem in general. This problem seems to be specific to quarkus applications. I manage to make everything work except for the quarkus server.
Context
- I have obtained a quarkus application template from https://code.quarkus.io/, of which includes a shell file called
mvnw
, which I can use to start a development server by executing./mvnw quarkus:dev -Dquarkus.http.host=0.0.0.0 -Dquarkus.http.port=9000 -Ddebug=9001
in the host terminal. - I can now go to
http://localhost:9000
in the browser. I can also docurl localhost:9000
and see that I get the HTML/CSS/JS code.
Issue
I cannot reach the quarkus server from within a docker container. I have tried:
- Run a base
curl
container:docker run --rm -it --name curl --entrypoint sh curlimages/curl:latest
- From within the container I attempt the following:
curl host.docker.internal:9000
-> Connection refusedcurl localhost:9000
-> Connection refusedcurl (the machine host name here):9000
-> Operation timed out (this happens for all ports)- Run the container with
--network=host
, and usecurl localhost:9000
-> Connection refused - Various other suggestions from the post mentioned at the top, but all get connection refused
However, I can connect to the JVM debug port using curl host.docker.internal:9001
(Empty reply from server), and I can also connect to a Python http fileserver (hosted from host) using the host.docker.internal
hostname. It seems to be that it is only the quarkus server that I cannot connect to.
What I want: A reliable way to connect to the host's quarkus container from within a docker container
System info
- OS: Windows 11 21H2 22000.493 , but I do everything within WSL2 (Ubuntu 20.04.3 LTS).
- CPU: Intel Core i7-10850H
CodePudding user response:
Could you try to disable the IPV6 on your wsl2 and repeat your test?
$ sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
$ sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
I had similar issues and this solved the problem for me.