容器如何连接到docker主机上的服务?

容器如何连接到docker主机上的服务?,docker,docker-compose,Docker,Docker Compose,有两个人,但他们没有完全回答这个问题。但是如果mods认为这是重复的,请让我知道 我有一个docker-compose.yml文件,它部署了phpmyadmin。有一个mysql服务器在主机上本地托管(不是作为容器) 我有一个配置文件供phpmyadmin连接到我的数据库。我似乎找不到docker主机的域名,所以我一直在使用容器部署的子网,并使用子网的.1。例如,最初容器部署到172.16.0.0/24,因此我在phpmyadmin的配置中声明连接到172.16.0.1 这个问题产生于这样一个事

有两个人,但他们没有完全回答这个问题。但是如果mods认为这是重复的,请让我知道

我有一个docker-compose.yml文件,它部署了phpmyadmin。有一个mysql服务器在主机上本地托管(不是作为容器)

我有一个配置文件供phpmyadmin连接到我的数据库。我似乎找不到docker主机的域名,所以我一直在使用容器部署的子网,并使用子网的
.1
。例如,最初容器部署到172.16.0.0/24,因此我在phpmyadmin的配置中声明连接到172.16.0.1

这个问题产生于这样一个事实:每次我重新部署,即发布
docker-compose-down和&docker-compose-up-d
时,网络地址都在不断变化。我的解决方法是显式声明默认的ipam网络子网,这是一个很好的解决方法,实际上是首选方法,因为我可以将mysql用户登录锁定到ip地址范围

但是考虑到docker知道如何将容器服务“phpmyadmin”解析为容器的IP地址,我认为主机必须有一些东西,这样我就不必每次都重新声明IP地址

那么,容器是否有一个“主机名”可以用来与主机通信,还是我一直在使用IP地址


编辑:我在Linux上使用docker,非常希望不要在主机模式下运行容器。

最简单的解决方案是在容器的撰写文件中设置
网络模式:“主机”
。看


或者,如果使用docker for Windows或docker for Mac,您可以从容器中使用
host.docker.internal
作为url名称。

谢谢,但我在Linux上使用docker。不过,如果你真的希望看到它在未来被添加到Linux中。另外,如果可能的话,我宁愿不要在主机模式下运行。@scuba_-mike啊,在这种情况下,你应该注意这个问题:。在此之前,您必须使用IP地址。使用脚本将其作为环境变量传递可能会减少痛苦。哇,这个问题已经存在一年多了!我想docker是在使用某种形式的dnsmasq来解析名称。你知道这项功能的障碍是什么吗?在本机Linux上,没有像这样神奇的主机名。相关问题有两个变通方法。