For Docker Desktop inside a container, the DNS name host.docker.internal resolves to an IP address allowing network access to the host. Is there something similar when using Rancher Desktop?
Assuming a running container (e.g the alpine image) in Docker Desktop it’s possible to run
docker exec alpine-container ping -c 2 host.docker.internal
Update: This has been resolved and released with v1.0.1 as it seems.
3
Answers
There is an open GitHub issue for it [0]. As a workaround until this is closed, a hint from a member of Rancher Labs might help (at least when running Rancher Desktop on Linux/macOS):
[0] https://github.com/rancher-sandbox/rancher-desktop/issues/1316
[1] https://rancher-users.slack.com/archives/C0200L1N1MM/p1634568974296000?thread_ts=1634560787.294400&cid=C0200L1N1MM
When using the dockerd (moby) container runtime in Rancher Desktop, adding
--add-host=host.docker.internal:host-gateway
to yourdocker run
command will achieve this behavior.Or for docker-compose:
https://megamorf.gitlab.io/2020/09/19/access-native-services-on-docker-host-via-host-docker-internal/#implementation
However I don’t believe this will work when using Rancher Desktop with containerd as the container runtime.
As mentioned in the question, this has been resolved in Rancher Desktop. However, for Windows users who might hit this question, a firewall rule might be required. (https://docs.rancherdesktop.io/faq/)