"host.docker.internal"在Linux中的等效是什么?

331

在 Mac 和 Windows 上,可以在容器内使用 host.docker.internal(Docker 18.03+)。

是否有类似的方法适用于 Linux,并且可以直接使用而无需传递环境变量或使用各种 CLI 命令进行提取?


4
在18.03版本中有一个docker.host.internal,但它对我来说不起作用。 - James O'Brien
7
这里有一个开放的 PR(https://github.com/docker/libnetwork/pull/2348),它为 Linux 添加了“host.docker.internal”功能。等待其被接受,现在可以使用一个特殊的容器(https://github.com/qoomon/docker-host)作为解决方法,它添加了统一的“dockerhost”主机,并且您可以从 Docker 中使用它。 - Serhii Popov
1
需要注意的是,docker-for-windows是一个特定的产品线,不会涵盖Windows上的docker总体。例如,我使用docker-toolbox(OG)在Windows上使用docker,这样它就可以与我的其他设置产生较少的冲突,而且我不需要HyperV。这个线程中有一个使用grep、awk和netstat的答案,对我来说很有效;尽管通常情况下,混合网络环境也可以通过LAN或WAN级别的主机名来解决,而不是机器主机名。这比在docker VM上进行hack更明确和灵活/可组合。 - MrMesees
11个回答

1
对于Linux系统,我可以使用我想要连接的服务名称,比如我的一个容器(php-fpm)正在尝试连接到MySQL,因此我使用mysql作为主机名,因为这是我的docker-compose中的服务名称。

1
这个问题是关于连接到主机系统,而不是同一docker-compose环境内的另一个服务。 - burny
两件事情:a)这是解决根本问题的正确答案(而不是通过使用/ etc / hosts绕过DNS解析),b)使用docker的内部来做简单的事情,如访问公开端口一直是不鼓励的。这就是docker-compose中的-p或“expose”的作用。我理解这个问题有点不同,但它源于另一个错误,通过嘲弄/ etc / hosts只是被覆盖了 - 而不是被修复。 - Matthias Hryniszak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接