我想在Docker容器中运行PostgreSQL。我正在构建自己的Docker镜像,因为我想包含PostgreSQL扩展。我应该将pg_hba.conf
配置文件编辑为:
第一个很简单:如果我没有弄错的话,我可以为172.17.0.0/16
添加规则。
但我怎么能接近第二个呢?当主机连接到容器中的psql时,IP(或范围)是什么样的?
备注:我正在通过docker run -p 127.0.0.1:5432:5432
启动容器,因此理论上我可以在all
中允许pg_hba.conf
,因为端口转发仅绑定到127.0.0.1
。但我更喜欢pg_hba.conf
中的这种额外安全级别,因为我(可能是错误的)通过docker run -p 5432:5432
运行容器。我希望这是有道理的。
更新
实际上,设置范围172.17.0.0/16
似乎不正确。例如,我的容器在我的测试中有IP 172.18.0.2
。根据我迄今为止的调查,似乎没有就默认范围或如何配置该范围达成共识。
答案 0 :(得分:2)
检查您的docker0网桥接口,可能是172.18.0.0/16
在postgresql.conf路径中进行更改将与pg_hba.conf相同。
listenaddress to“*”
然后在pg_hba.conf中添加规则为
主持所有172.18.0.0/16 md5。
使用hostip运行docker:docker run -p:5432:5432 通过这种方式,同一个docker n / w上的其他容器可以连接,也可以连接来自主机,但不能连接其他主机。