At which IP address can a docker container connect to its host on Docker for Windows (on Windows 10)? How do you find this IP address?
Example: you have a service running at port 1234 on your Windows 10 machine. A program inside your container must access this service. What IP address should the program use to connect to the host?
Short answer: in most cases, you'll need 10.0.75.1 .
In Docker for Windows, the container communicates through a vEthernet adapter called DockerNAT. To find its details, open Command Prompt and type
ipconfig
Look for an entry that looks like
Ethernet adapter vEthernet (DockerNAT):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::fd29:297:4583:3ad4%4
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
The IP address to the right of IPv4 Address
is the one you need.
Note: make sure the service allows connections from outside your host. As far as that service is concerned, your docker container is a different machine. Also make sure Windows Firewall allows communication to and from the service.
One of options that allows you to connect from container to host, is to run your container with parameter
--net="host"
Example:
docker run -it --net="host" container_name
Then from container, you can connect to service on host using:
localhost:port
But in this case, you will not be able to link more containers using --link
parameter.
More on this topic:
http://phillbarber.blogspot.sk/2015/02/connect-docker-to-service-on-parent-host.html
UPDATE:
From version 18.03, you can use DNS name host.docker.internal
, which resolves to the internal IP address used by the host.
More: https://docs.docker.com/docker-for-windows/networking/
On older versions, you can connect to service running on host Windows using IP address you get executing command ipconfig on host -> Ethernet adapter -> IPv4 Address
UPDATE
As per Datz comment below, 2018 D4Win docker.for.win.localhost is working (confirmed)