[英]What is running on host.docker.internal host?
我只是好奇,host.docker.internal 主机上运行的是什么?
此服务将包从 docker 容器路由到主机网络上的服务。
但它到底是什么?
我发现它不是网关。
我将回答一些关于Linux
实现的发现。 我敢打赌,Docker for Windows / Mac 的实现细节会有所不同。
简而言之: host.docker.internal
是一个名称。 在您的主机上运行并绑定到也设置为 Docker 守护进程host-gateway
的网络接口的每个服务,都可以从位于host.docker.internal:[service_port]
的容器内部访问。
$ 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
进行配置,请参阅相关 文档👇:
--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
您可以检查添加此功能的拉取请求: #40007
用户描述他做了以下事情:
我做了什么
此 PR 允许容器通过将特殊字符串“host-gateway”附加到--add-host
来连接到 Linux 主机,例如--add-host=host.docker.internal:host-gateway
添加host.docker.internal
DNS 条目在/etc/hosts
中并将其映射到host-gateway-ip
。
此 PR 还添加了一个守护进程标志调用host-gateway-ip
,默认为默认网桥 IP 。
Docker Desktop 需要将此字段设置为主机代理 IP,以便可以将 host.docker.internal 的 DNS 请求路由到 VPNkit
我认为这一切背后的历史或多或少如下:
host.docker.internal
东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.