Docker中的PostgreSQL – pg_hba.conf允许从主机访问容器

我想在Docker容器中运行PostgreSQL。 我正在构build自己的Docker镜像,因为我想包含PostgreSQL扩展。 我应该编辑pg_hba.confconfiguration文件来:

  1. 允许来自其他容器的访问
  2. 允许来自主机的访问

第一个很简单:如果我没有弄错,我可以为172.17.0.0/16添加一条规则。

但是我怎样才能接近第二呢? 主机连接到容器中的psql时,IP(或范围)是什么样的?

备注:我通过docker run -p 127.0.0.1:5432:5432启动容器,所以理论上我可以只允许allpg_hba.conf因为端口转发只绑定到127.0.0.1 。 但是我更喜欢pg_hba.conf这个额外的安全级别,当我(可能是错误的)通过docker run -p 5432:5432运行容器。 我希望这是有道理的。

更新

实际上,设置范围172.17.0.0/16似乎不正确。 例如,我的容器在我的testing中有IP 172.18.0.2 。 根据我迄今为止的调查,似乎没有就默认范围或如何configuration这个范围达成共识。

检查你的Docker0桥接口,你的情况可能是172.18.0.0/16

使postgresql.confpath中的更改将与pg_hba.conf相同。

listenaddress到“*”

然后在pg_hba.conf中添加规则为

主机全部为172.18.0.0/16 md5。

使用hostip运行docker:docker run -p:5432:5432通过这种方式,在同一个docker n / w上的其他containser可以和主机连接,但不能从其他主机连接。