从*内部* Docker容器到Mac上主机的postgres localhost实例的Docker postgres连接

时间:2020-01-26 14:38:40

标签: postgresql macos docker

关于SO的所有问题似乎都与创建postgres 容器并将其从Mac主机连接起来的情况相反。但是我正尝试相反,没有成功。我的Mac主机上运行了localhost,尽管设置了端口标志,但我仍无法在容器内获取与我的localhost postgres对话的代码(与远程主机postgres的对话就可以了)。

docker run -it -p 5000:5000 -p 5432:5432 yard-stats

然后在docker内部:

telnet 0.0.0.0 5432
Trying 0.0.0.0...
telnet: Unable to connect to remote host: Connection refused

或telnet 127.0.0.1或localhost。连接被拒绝。

编辑:我还尝试使用标志--network="host",该标志除了中断与localhost:5000上的容器的入站连接之外,什么也没有改变。

1 个答案:

答案 0 :(得分:1)

如果在Mac上使用docker,则可以使用host.docker.internal特殊DNS名称,该名称解析为主机使用的内部IP地址。


您还可以在您的docker run命令中使用--network="host"在主机网络中运行容器。然后,在主机网络中运行时,容器内的localhost接口将与主机的localhost接口相同。因此,您应该能够使用localhost:5432连接到postgresql。您可以删除-p选项,因为它在与--network="host"一起运行时不起作用。

docker run -it --network=host yard-stats