我创建了 docker postgres 实例
docker run -d \
--name test_db \
-v data:/var/lib/postgresql/data \
-e "POSTGRES_PASSWORD=abcdefghij" \
-e "POSTGRES_USER=testuser" \
-p 5432:5432 \
postgres
我可以使用公共服务器 ip 从其他主机正确连接到该数据库,例如。
psql -U testuser -h 111.111.111.111 -d testuser // in reality I use proper IP
但是如果我想在运行容器的同一主机上执行此操作,则无法连接(它只是挂起)。
我的 pg_hba.conf(容器内)
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
host all all 0.0.0.0/0 md5
在 postgresql.conf 里面有一行:
listen_addresses = '*'
iptables 的相关行:
$ iptables -L | grep sql
ACCEPT tcp -- anywhere 172.19.0.2 tcp dpt:postgresql
此外,如果我使用 172.19.0.2 地址,它可以在本地工作,但如果我使用公共服务器 IP,它就会挂起。我不知道为什么会这样。我的应用程序分布在许多主机中,包括一个带有 DB 的主机,并且我不想根据位置使用其他地址。有人可以帮忙吗?