Accessing Windows or Mac Host IP in Docker

When working with Docker containers on Windows or Mac, you might need to access the IP address of the host machine from within the container. Docker provides two convenient DNS names that you can use to achieve this: host.docker.internal and gateway.docker.internal.

Using host.docker.internal

The DNS name host.docker.internal allows you to access the IP address of the host machine from within a Docker container. This is particularly useful when you need to communicate with services running on the host, such as a development server.

Here’s how you can use it in your Docker container:

1
$ docker run -it --rm alpine ping host.docker.internal

In this example, the alpine container is used to run the ping command against host.docker.internal. This will resolve to the IP address of the host machine.

Using gateway.docker.internal

The DNS name gateway.docker.internal is used to access the default gateway IP address of the host machine from within a Docker container. This can be helpful when you need to communicate with external services or the internet from within the container.

Here’s how you can use it in your Docker container:

1
$ docker run -it --rm alpine ping gateway.docker.internal

In this example, the alpine container is used to run the ping command against gateway.docker.internal. This will resolve to the IP address of the default gateway of the host machine.

Limitations and Considerations

Keep in mind the following limitations and considerations when using these DNS names:

  1. Supported Operating Systems: These DNS names (host.docker.internal and gateway.docker.internal) are specific to Docker Desktop on Windows and Docker Desktop on Mac. They may not work in other Docker environments.

  2. Container Network Mode: These DNS names work best when the Docker container is running in the default bridge network mode. If you’re using a custom network mode or network configuration, the behavior might vary.

  3. Firewall and Security Software: Make sure that any firewall or security software on the host machine doesn’t block the communication between the container and the host.

  4. DNS Resolution: Docker relies on DNS resolution to map these names to IP addresses. Ensure that DNS resolution is functioning properly on your system.

Summary

When working with Docker on Windows or Mac, you can use the DNS names host.docker.internal and gateway.docker.internal to access the IP address of the host machine or its default gateway from within a Docker container. These DNS names provide a convenient way to enable communication between your containers and the host system. Just remember the limitations and considerations mentioned above to ensure smooth usage.

Remember to adjust your Docker run commands or configurations to suit your specific use case and requirements.

0%