Postgresql 如何使docker容器可以访问postgres.app db?

Postgresql 如何使docker容器可以访问postgres.app db?,postgresql,docker,docker-compose,postgres.app,Postgresql,Docker,Docker Compose,Postgres.app,我让postgres.app在Mac上本地运行,希望本地docker容器能够连接到它。我怎样才能最好地做到这一点 我发现这篇文章建议使用--addhost标志()将Docker主机的IP地址传递给容器。然而,我的笔记本电脑的IP地址经常变化。难道没有更简单的方法吗?难道没有一种简单的方法可以打开容器的本地端口吗?如果我们谈论的是开发人员工作站,您可以在主机网络内启动Docker容器 docker run --net=host myContainer 因此,您的容器与主机在同一堆栈中运行,并且应

我让postgres.app在Mac上本地运行,希望本地docker容器能够连接到它。我怎样才能最好地做到这一点


我发现这篇文章建议使用--addhost标志()将Docker主机的IP地址传递给容器。然而,我的笔记本电脑的IP地址经常变化。难道没有更简单的方法吗?难道没有一种简单的方法可以打开容器的本地端口吗?

如果我们谈论的是开发人员工作站,您可以在主机网络内启动Docker容器

docker run --net=host myContainer

因此,您的容器与主机在同一堆栈中运行,并且应该能够访问您的postgres.app。

从您的容器中,尝试连接到hostname
docker.for.mac.localhost
。例如:

psql -U my_user docker.for.mac.localhost -U my_user my_database
:

Mac的IP地址不断变化(如果没有网络,则没有IP地址) 访问权限)。从17.06开始,我们建议连接到 仅限Mac的特殊DNS名称
docker.for.Mac.localhost
将解析 主机使用的内部IP地址

注:这需要Docker for Mac
=17.06.0-ce-MAC182017-06-28

几件事

  • 使用
    docker.for.mac.localhost
    作为您的主机(这假设您有@Pete提到的最新mac docker)
  • 确保
    ~/Library/Application Support/Postgres/var-9.6/pg_hba.conf中有这样的记录
托管所有0.0.0.0/0信任

  • ~/Library/Application Support/Postgres/var-9.6/postgresql.conf中更改此行
    listen\u addresses='localhost'

listen\u addresses='*'


listen\u addresses='localhost,docker.for.mac.localhost'

您还可以在docker容器的子网络中使用主机的网络地址,默认情况下为
172.17.0.1
。它在Linux主机上运行得很好,但我不确定它在Mac上是否能正常工作。@bekce听起来我想试试。关于如何在docker容器的子网中使用我主机的网络地址,有什么建议吗?好吧,只要尝试一下docker run-it--rm ubuntu
,一旦进入:
apt update&&apt install telnet&&telnet 172.17.0.1 5432
,看看它是否可以连接。谢谢!我知道怎么做了,然后。。。连接被拒绝。