首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >host.docker.internal主机上运行的是什么?

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

Stack Overflow用户
提问于 2022-07-01 09:56:01
回答 1查看 857关注 0票数 3

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

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

但到底是什么?

我发现这不是网关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-01 11:06:56

我将用我发现的关于Linux实现的一些事情来回答。我敢打赌,用于Windows / Mac的Docker的实现细节将是不同的。

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

示例

代码语言:javascript
运行
复制
$ 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还添加了守护进程标志 call host-gateway-ip ,默认为默认桥接IP。 Desktop需要将此字段设置为主机代理IP,以便host.docker.internal的DNS请求可以路由到VPNkit

历史语境

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

  • Linux用户可以使用默认网桥的IP地址访问主机服务。码头公司建立关系网的方式提供了这样的机会。
  • Windows / Mac用户也需要访问主机,但由于操作系统不同,那里的网络更加复杂。所以Docker / Mac引入了host.docker.internal
  • 它也提供给Linux用户,因为它比IP地址更容易使用名称。

更多:从Docker容器内部,如何连接到机器的本地主机?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72827527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档