【问题标题】:PostgreSQL in Docker - pg_hba.conf to allow access from host to containerDocker 中的 PostgreSQL - pg_hba.conf 允许从主机访问容器
【发布时间】:2017-11-22 20:48:06
【问题描述】:

我想在 Docker 容器中运行 PostgreSQL。我正在构建自己的 Docker 映像,因为我想包含 PostgreSQL 扩展。我应该将pg_hba.conf 配置文件编辑为:

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

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

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

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

更新

实际上,设置范围172.17.0.0/16 似乎不正确。例如,我的容器在我的测试中有 IP 172.18.0.2。根据我目前的调查,对于默认范围或如何配置该范围似乎没有达成共识。

【问题讨论】:

    标签: postgresql docker


    【解决方案1】:

    检查你的 docker0 网桥接口,它可能是 172.18.0.0/16

    更改 postgresql.conf 路径将与 pg_hba.conf 相同。

    收听“*”的地址

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

    托管所有 172.18.0.0/16 md5。

    使用 hostip 运行 docker : docker run -p :5432:5432 这样,同一 docker n/w 上的其他容器也可以从主机连接,但不能从其他主机连接。

    【讨论】:

    • 你能解释一下为什么在 pg_hba.conf 中设置172.18.0.0/32 吗?为什么不172.18.0.0/16
    • 对不起,它的错字正确值为 172.18.0.0/16 /32 给单个容器 ip。
    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 2021-12-09
    • 2020-02-17
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多