如何从Windows 10(Docker for Windows)上的容器连接到docker主机

时间:2016-11-22 16:03:29

标签: networking docker windows-10 virtual-machine hyper-v

Docker容器可以在Docker for Windows(在Windows 10上)连接到其主机的IP地址?你怎么找到这个IP地址?

示例:您在Windows 10计算机上的端口1234上运行了一项服务。容器内的程序必须访问此服务。程序使用什么IP地址连接主机?

5 个答案:

答案 0 :(得分:62)

简短回答:在大多数情况下,您需要 10.0.75.1

在Docker for Windows中,容器通过名为DockerNAT的vEthernet适配器进行通信。要查找其详细信息,请打开命令提示符并键入

ipconfig

查找看起来像

的条目
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 . . . . . . . . . :

IPv4 Address右侧的IP地址是您需要的地址。

注意:确保该服务允许来自主机外部的连接。就该服务而言,您的docker容器是另一台机器。还要确保Windows防火墙允许与服务进行通信。

答案 1 :(得分:18)

允许您从容器连接到主机的选项之一是使用参数

运行容器

--net="host"

示例:

docker run -it --net="host" container_name

然后从容器中,您可以使用以下命令连接到主机上的服务:

localhost:port

但在这种情况下,您将无法使用--link参数链接更多容器。

有关此主题的更多信息: http://phillbarber.blogspot.sk/2015/02/connect-docker-to-service-on-parent-host.html

<强>更新

从版本 18.03 ,您可以使用DNS名称host.docker.internal,该名称解析为主机使用的内部IP地址。

更多:https://docs.docker.com/docker-for-windows/networking/

在旧版本上,您可以使用在主机上执行命令 ipconfig 的IP地址连接到主机Windows上运行的服务 - &gt;以太网适配器 - &gt; IPv4地址

<强>更新 根据下面的Datz评论,docker.for.win.localhost正在使用Docker for Windows(已确认)。

答案 2 :(得分:9)

主机将在容器使用的默认DNS中注册host.docker.internal。因此,即使暴露了端口,您也可以使用curl http://host.docker.internal/之类的东西来访问计算机上运行的Web服务器,即使该服务器正在另一个容器中运行。

答案 3 :(得分:1)

在Windows 10上,启动Docker容器后,可以在命令行(cmd或Docker QuickStart Terminal等)中运行docker-machine ip以获取Docker容器的IP地址。该IP地址通常为192.168.99.100。

答案 4 :(得分:0)

仅用于为docker工具箱用户添加注释。 简短的答案是:192.168.56.1

enter image description here

enter image description here