Docker: Connect to host from container on Linux
Dominik Rüttiger 1 min read
If you’re coming from the Mac, you’re probably used to connecting to the host
from inside a container with the address host.docker.internal
. On Linux,
however, this does not work out of the box.
Docker CLI
If you run the following command on a Linux machine, you will see that DNS resolution is not working:
docker run --rm alpine ping -c 1 host.docker.internal
To fix this, we need to set the DNS name manually:
docker run --add-host=host.docker.internal:host-gateway --rm alpine ping -c 1 host.docker.internal
Instead of host.docker.internal
you could use any other name.
Docker Compose
To achieve the same result in Docker Compose, use the extra_hosts
property.
Create a docker-compose.yml
file:
version: '3.9'
services:
test:
image: alpine
extra_hosts:
- 'host.docker.internal:host-gateway'
Test it with:
docker-compose run --rm test ping -c 1 host.docker.internal
Further reading
- Overview of Docker container communication options
- Set specific ip address by creating a custom network