2017-02-28 105 views
2

我在我的Mac上本地运行postgres.app,并希望我的本地docker容器能够连接到它。我该如何做到最好?如何让docker容器可以访问postgres.app数据库?

我发现这篇文章建议使用--add-host标志(Host port with DB to Docker container)将Docker主机的IP地址传递给容器。但是,笔记本电脑的IP地址经常更改。没有一个更简单的方法来做到这一点?没有简单的方法来打开本地端口到容器?

+0

也还可以使用t他在Docker容器子网中的主机网络地址,缺省情况下为172.17.0.1。它在Linux主机上运行良好,但我不确定这可以在Mac上使用。 – bekce

+0

@bekce听起来好像我想尝试一下。任何指针如何使用我的主机的网络地址在我的码头集装箱的子网络? – Malte

+0

那么,只需尝试'docker run -it -rm ubuntu',一旦进入:'apt update && apt安装telnet&telnet 172.17.0.1 5432'并查看它是否可以连接。 – bekce

回答

0

如果我们正在讨论开发人员工作站,可以在主机网络中启动Docker容器。

docker run --net=host myContainer 

所以你的容器和你的主机运行在同一个栈中,并且应该可以访问你的postgres.app。

0

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

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

From the docs

Mac也有一个不断变化的IP地址(或根本没有,如果你没有网络 访问)。从17.06开始,我们的建议是连接到 特殊Mac仅DNS名称docker.for.mac.localhost,该名称将 解析为主机使用的内部IP地址。

注:这需要多克的Mac >= 17.06.0-ce-mac18, 2017-06-28

2

事情很少

  • 使用docker.for.mac.localhost为您的主机(这里假设你有最新的泊坞窗的Mac作为@Pete提到)
  • 制作确定有这样的记录~/Library/Application Support/Postgres/var-9.6/pg_hba.conf

host all all 0.0.0.0/0 trust

  • 改变这一行listen_addresses = 'localhost'~/Library/Application Support/Postgres/var-9.6/postgresql.conf

listen_addresses = '*'

listen_addresses = 'localhost, docker.for.mac.localhost'

相关问题