我只是好奇,host.docker.internal主机上运行的是什么?
此服务将包从码头容器路由到主机网络上的服务。
但到底是什么?
我发现这不是网关。
发布于 2022-07-01 11:06:56
我将用我发现的关于Linux
实现的一些事情来回答。我敢打赌,用于Windows / Mac的Docker的实现细节将是不同的。
简而言之,: 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
配置,参见相对的文档:-主机-网关- ip IP地址,专用的“主机-网关”字符串-添加-主机解析.默认为默认桥的IP地址。
再挖点..。
您可以检查添加此功能的拉请求:#40007
用户描述他做了以下工作:
我所做的 这个PR允许容器通过在
--add-host
上附加一个特殊的字符串--add-host
来连接到Linux主机,例如--add-host=host.docker.internal:host-gateway
,它在/etc/hosts
中添加host.docker.internal
DNS条目并将其映射到host-gateway-ip
。 此PR还添加了守护进程标志 callhost-gateway-ip
,默认为默认桥接IP。 Desktop需要将此字段设置为主机代理IP,以便host.docker.internal的DNS请求可以路由到VPNkit
历史语境
我认为这一切背后的历史大致如下:
host.docker.internal
。https://stackoverflow.com/questions/72827527
复制相似问题