gpt4 book ai didi

docker - host.docker.internal 主机上运行的是什么?

转载 作者:行者123 更新时间:2023-12-05 03:22:03 26 4
gpt4 key购买 nike

我很好奇,host.docker.internal 主机上运行的是什么?

此服务将包从 docker 容器路由到主机网络上的服务。

但它到底是什么?

我发现它不是网关。

最佳答案

我会用一些我发现的关于 Linux 实现的东西来回答。我敢打赌,适用于 Windows/Mac 的 Docker 的实现细节会有所不同。

简而言之 host.docker.internal 是一个名称。在您的主机上运行并绑定(bind)到也设置为 Docker 守护程序 host-gateway 的网络接口(interface)的每个服务,都可以从位于 host.docker.internal 的容器内部访问: [服务端口]

例子

$ docker run -it --rm --add-host=host.docker.internal:host-gateway alpine
/ # cat /etc/hosts
127.0.0.1 localhost
... (it has a few other lines here) ...
172.17.0.1 host.docker.internal 👈👈👈

工作原理

  • --add-host:它将您在上面看到的最后一行添加到容器的 /etc/hosts 中,这样 host. docker.internal 解析为host-gateway

    的IP地址
  • host-gateway:通常是172.17.0.1(默认网桥)也可以通过dockerd配置,见相关docs👇 :

--host-gateway-ip ip      IP address that the special 'host-gateway'
string in --add-host resolves to.
Defaults to the IP address of the default bridge

更多挖掘...

可以查看添加该功能的Pull request:#40007

用户描述他做了以下事情:

What I did
This PR allows containers to connect to Linux hostsby appending a special string "host-gateway" to --add-hoste.g. --add-host=host.docker.internal:host-gateway which addshost.docker.internal DNS entry in /etc/hosts and maps it to host-gateway-ip.
This PR also add a daemon flag call host-gateway-ip which defaults tothe default bridge IP.
Docker Desktop will need to set this field to the Host Proxy IPso DNS requests for host.docker.internal can be routed to VPNkit

历史背景

我认为这一切背后的历史大致如下:

  • Linux 用户可以使用默认网桥的 IP 地址访问主机服务。 Docker 设置网络的方式提供了这一点。
  • Windows/Mac 用户也需要访问主机,但由于操作系统不同,那里的网络更加复杂。所以 Docker for Windows/Mac 引入了这个 host.docker.internal 东西。
  • 它也可供 Linux 用户使用,因为使用名称比使用 IP 地址更容易。

更多:From inside of a Docker container, how do I connect to the localhost of the machine?

关于docker - host.docker.internal 主机上运行的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72827527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com