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

时间:2019-12-13 01:51:07

标签: docker docker-compose

有两个related questions,但他们并没有完全回答问题。但是如果mod认为这是重复的,请告诉我。

我有一个部署phpmyadmin的docker-compose.yml文件。在主机本身上本地托管了一个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,非常希望不要在主机模式下运行容器。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是在容器的撰写文件中设置<script src="https://unpkg.com/compromise"></script> <script src="https://unpkg.com/compromise-syllables"></script> <textarea id="text" cols="50" rows="5"> As second argument, emojify takes an handler to parse unknown emojis </textarea> <div> <button id="convert">Convert</button> </div> <p id="result"></p>。参见https://docs.docker.com/compose/compose-file/#network_mode

或者,如果使用Windows的Docker或Mac的Docker,则可以在容器内使用network_mode: "host"作为URL名称。