【发布时间】:2014-08-10 18:18:04
【问题描述】:
所以我在 docker 容器中运行了一个 Nginx,我在 localhost 上运行了一个 mysql,我想从我的 Nginx 中连接到 MySql。 MySql 运行在 localhost 上,不对外暴露端口,所以绑定在 localhost 上,而不是绑定在机器的 ip 地址上。
有没有办法从这个 docker 容器内连接到这个 MySql 或本地主机上的任何其他程序?
这个问题与“如何从 docker 容器内获取 docker 主机的 IP 地址”不同,因为 docker 主机的 IP 地址可能是网络中的公共 IP 或私有 IP在 docker 容器内可能可以访问,也可能无法访问(如果托管在 AWS 或其他地方,我的意思是公共 IP)。即使您拥有 docker 主机的 IP 地址,这并不意味着您可以从容器内连接到 docker 主机,因为您的 Docker 网络的 IP 地址可能是覆盖、主机、网桥、macvlan、none 等,这限制了该 IP 地址。
【问题讨论】:
-
为什么不把mysql绑定到docker0呢?
-
对于 Windows 机器:- $docker run -d --name MyWebServer -P httpd
-
如果没有
network: host,您将无法从容器返回到主机。仅托管到容器。这是容器背后的主要思想。出于稳定性和安全原因,它们被隔离。 -
您好 stackoverflow.com/a/61001152/418599 是获取有效 docker 内部主机的流行解决方案。
标签: nginx docker reverse-proxy docker-networking