I'm just curious, what is running on host.docker.internal host?
This service routes packages from docker container to services on host network.
But what exactly is it?
I found out that it's not gateway.
I'll answer with a few things that I've found regarding the Linux implementation. I bet that the implementation details for Docker for Windows / Mac will be different.
In short: host.docker.internal is a Name. Every service that runs on your host and binds to the network interface that is also set as the Docker Daemon host-gateway, it can be accessed from inside a container at host.docker.internal:[service_port].
$ docker run -it --rm --add-host=host.docker.internal:host-gateway alpine
/ # cat /etc/hosts
127.0.0.1 localhost
... (it has a few other lines here) ...
172.17.0.1 host.docker.internal 👈👈👈
--add-host (applies to the container): it adds the last the line you see above to the container's /etc/hosts and this way host.docker.internal resolves to the IP address of host-gateway
host-gateway (applies to the host): with a typical Docker installation, it's usually 172.17.0.1 (default bridge) but it can be changed/configured with dockerd, see the relative docs 👇:
--host-gateway-ip ip IP address that the special 'host-gateway' string in --add-host resolves to. Defaults to the IP address of the default bridge
You can check the Pull request that adds this feature: #40007
The user describes that he did the following:
What I did
This PR allows containers to connect to Linux hosts by appending a special string "host-gateway" to--add-hoste.g.--add-host=host.docker.internal:host-gatewaywhich addshost.docker.internalDNS entry in/etc/hostsand maps it tohost-gateway-ip.
This PR also add a daemon flag callhost-gateway-ipwhich defaults to the default bridge IP.
Docker Desktop will need to set this field to the Host Proxy IP so DNS requests for host.docker.internal can be routed to VPNkit
I think the history behind all this is more or less the following:
host.docker.internal thing.host.docker.internal?0.0.0.0, 127.0.0.1 and localhost?If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With