How to connect to docker host from container on Wi

2019-01-06 17:32发布

问题:

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?

回答1:

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.



回答2:

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)