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

kkih6yb8  于 2023-01-01  发布在  Docker
关注(0)|答案(9)|浏览(308)

Docker容器可以通过哪个IP地址连接到Docker for Windows(Windows 10)上的主机?如何找到此IP地址?
示例:您的Windows 10计算机上有一个服务在端口1234处运行。容器内的程序必须访问此服务。程序应使用哪个IP地址连接到主机?

0ejtzxu1

0ejtzxu11#

简短回答:在大多数情况下,您将需要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防火墙允许与该服务进行通信。

tp5buhyn

tp5buhyn2#

允许您从容器连接到主机的选项之一是使用参数运行容器
第一个月
示例:

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

然后,从container中,您可以使用以下命令连接到主机上的服务:
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/
在旧版本上,您可以使用在主机-〉以太网适配器-〉IPv4地址上执行命令 * ipconfig * 获得的IP地址连接到主机Windows上运行的服务

    • 更新**根据下面的Datz注解,docker.for.win.localhost在Windows版Docker中工作(已确认)。
klr1opcd

klr1opcd3#

主机会在默认的容器DNS中注册一个host.docker.internal,所以你可以使用类似curl http://host.docker.internal/的东西来访问运行在你机器上的web服务器,即使服务器运行在另一个容器中,只要你公开了端口。

3j86kqsm

3j86kqsm4#

只是为了给Docker工具箱用户添加一个注解。简短的回答是:192.168.56.1

zfciruhq

zfciruhq5#

这是如此奇怪,在2022年4月,这仍然是一个问题。和大多数的“主机.docker.内部”和“172.17.0.1“不工作的WINDOWS docker。
因此,我建议Windows Docker用户只需在cmd中键入“ipconfig”:
你会得到一些ips为您的windows(主机)机器:

然后,在你的docker中,安装“ping/curl/ifconfig/telnet”,然后键入“ifconfig”以获得你的“docker”ip地址,然后键入“ping〈windows主机ip”以查看ip是否正确。
这需要你安装外部工具到Docker,但它值得。

iezvtpos

iezvtpos6#

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

v1uwarro

v1uwarro7#

打开命令提示符并键入ipconfig
寻找
IPv4地址............:小行星192
IPv4地址右侧的IP地址就是您需要的地址。

“主机”:“主机.对接器.内部”
也起作用

xtupzzrd

xtupzzrd8#

我正在使用Windows containers与Docker版本20.10.11。我正在尝试连接主机上运行的服务器。我尝试了所有其他答案/评论。没有一个对我有效。我尝试...

  • 10.0.75.1
  • 10.0.0.2
  • 使用--net=“主机”启动(对于停靠组合,“网络模式:主机”)
  • host.docker.internal
  • docker.for.win.localhost
  • 192.168.56.1
  • 192.168.99.100
  • 主机上每个vEthernet适配器的IP

我可以通信的唯一方式是在主机(而不是容器)上使用标准以太网适配器的IPv4:

使用curl http://10.0.0.4:8080可以很好地访问服务器。
旁注-事先运行配置脚本也可以解决这个问题...只是没有必要。https://stackoverflow.com/a/67434367/7991646

xkftehaa

xkftehaa9#

我遇到了类似的问题。在我的情况下,/etc/hosts文件从我的容器中丢失。这是因为我没有使用Docker桌面。Docker桌面允许Docker守护进程在/etc/hosts文件中写入此条目。我在Windows Server 2019上使用Docker引擎与lcow。我只需要使用我的主机IP而不是host.docker.internal来访问我的主机上的服务。我可以使用此IP,因为它是静态的。在动态IP的情况下,您将需要DNS来解析该IP或使用网桥网络IP。请参阅问题的详细信息,以及我如何修复它在此线程:无法在Windows Server 2019上使用docker-compose解析docker.host.internal

相关问题