【发布时间】:2015-01-18 05:44:36
【问题描述】:
在 SO 上有一些类似的问题,例如 this one,但据我所知,Docker 生态系统自从被问到之后发生了很大变化,我仍然无法在任何地方找到规范的答案。
那么,如果我的主机上运行着像 Redis 这样的数据库,并且我希望我的容器能够访问它,那么规范的方法是什么?
【问题讨论】:
标签: docker
在 SO 上有一些类似的问题,例如 this one,但据我所知,Docker 生态系统自从被问到之后发生了很大变化,我仍然无法在任何地方找到规范的答案。
那么,如果我的主机上运行着像 Redis 这样的数据库,并且我希望我的容器能够访问它,那么规范的方法是什么?
【问题讨论】:
标签: docker
除非您有防火墙之类的东西阻止它(正如您提到的问题所做的那样),否则您只需连接到它,就好像您在另一台机器上一样。
您的容器将拥有自己的 IP 地址和虚拟以太网设备; Docker 将通过 Docker 桥设置从该设备到主机的路由;它应该一切正常。
我可以想到十几个其他原因让您遇到麻烦,但会让您提及您遇到的具体问题。
【讨论】:
经过大量研究,我发现了两种支持的方式:
--link 将两者连接起来。更多信息here。--add-host 标志告诉 Docker。示例:docker run --add-host=localbox:192.168.59.3 ...。现在让我点击别名“localbox”从 Docker 中访问本地主机上的任何内容。例如,要从 Docker 内部连接到 localhost 上的 mysql,我只需执行 mysql -h localbox。最后,对 #2 的警告:您的服务会将尝试从 Docker 内部连接到本地主机上的服务的内容视为外部进程,因此要使其正常工作,您需要确保服务未在监听仅在 127.0.0.1 上,根据您添加的内容,您需要打开防火墙以允许根据需要进行连接。
【讨论】: