2016-11-22 109 views
13

docker容器可以在Docker for Windows(在Windows 10上)连接到其主机的IP地址?你如何找到这个IP地址?如何从Windows 10上的容器连接到码头主机(Docker for Windows)

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

+0

在某些情况下,这是** ** 10.0.0.2 – nwinkler

+0

你好,你的容器是Windows或Linux? –

回答

23

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

在Docker for Windows中,容器通过名为DockerNAT的vEthernet适配器进行通信。要了解其详细信息,请打开命令提示符和看起来像

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 . . . . . . . . . : 

的IP地址的IPv4 Address右边是一个你需要的一个条目类型

ipconfig 

看。

注意:确保服务允许来自主机外部的连接。就该服务而言,您的码头集装箱是不同的机器。还要确保Windows防火墙允许与服务进行通信。

+1

你可以扩展如何允许来自你的主机外部的连接? – PeterE

+0

这取决于您要连接的服务。大多数服务都有一个配置文件,您可以在其中指定允许连接到服务的IP(范围)。 – RemiX

+1

如果我想要通过域名(ping主机)来获得IP,那该怎么办?我试图在Azure(Windows Server 2016 with Containers)中部署我的应用程序,但没有得到10.0.75.1。 –

7

之一的,可以让你从容器到主机连接选项,是与参数运行您的容器

--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

+0

正如我从我的尝试和[这个答案](http://stackoverflow.com/questions/35586778/docker-container-doesnt-expose-ports-when-net-host-is- mentioned-in-the-docker ),'--net =“host”'不启用端口映射(比如端口80到8000),并可能导致主机端口号和Docker容器端口号冲突(例如,如果主机和容器都有Apache在端口80上运行)。 – RemiX

+4

您的答案不适用于Windows和Mac atm。 '--net =“host”'只适用于Linux。在Mac上,您可以通过名称'docker.for.mac.localhost'访问主机,在Windows上没有这样的名称,您可以使用'ipconfig'获得网桥IP地址 – Derp

相关问题