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