Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Can';t从容器连接到我的docker主机postgresql数据库_Linux_Postgresql_Docker_Networking_Fedora - Fatal编程技术网

Linux Can';t从容器连接到我的docker主机postgresql数据库

Linux Can';t从容器连接到我的docker主机postgresql数据库,linux,postgresql,docker,networking,fedora,Linux,Postgresql,Docker,Networking,Fedora,如果我执行ifconfig,docker0ip是172.17.0.1,当我运行我的集装箱化应用程序,然后docker network inspect bridgemyapp ip是172.17.0.2时,我想它们在同一个网络上 但在我的应用程序中,我试图连接到docker主机的postgresql数据库,我向我的ORM提供了172.17.0.1:5432,但它抛出了一个错误connect-econnrefluse172.17.0.1:5432 问题出在哪里?检查postgres实例数据目录中的p

如果我执行
ifconfig
docker0
ip是
172.17.0.1
,当我运行我的集装箱化应用程序,然后
docker network inspect bridge
myapp ip是
172.17.0.2
时,我想它们在同一个网络上

但在我的应用程序中,我试图连接到docker主机的postgresql数据库,我向我的ORM提供了
172.17.0.1:5432
,但它抛出了一个错误
connect-econnrefluse172.17.0.1:5432


问题出在哪里?

检查postgres实例数据目录中的pg_hba.conf文件。在此文件中,您可以配置允许哪些用户通过哪个网络进行身份验证。通过添加以下行,确保您的postgres实例正在接受来自docker0网络的连接:

host    all             all             172.17.0.0/24            md5

在这一行中,您可以调整第二个“all”来指定某个用户。

我忘记在
postgresql.conf
中添加
listen\u addresses=“*”

您使用哪个操作系统?Windows、Mac或Linux?@KitHsu我使用的是Fedora 27我想PostgreSQL安装在主机上,而不是容器中。如果我是对的,我们应该确保PostgreSQL工作良好,并且还可以在docker0上进行监听。探测端口活跃度的典型方法是在主机上运行nc-v 172.17.0.1 5432或netstat-np | grep 5432以查看端口状态。如果端口处于活动状态,请尝试禁用SELinux。我已禁用SELinux,而且postgresql在端口
5432
上运行良好,我真的看不出问题。看起来容器正在阻止此端口上的连接。好的,我找到了它不工作的原因,感谢您的回答,我的postgresql安装从所有连接接受md5,但我没有在我的
postgresql.conf
中使用
listen\u addresses=“*”
。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@DerekBrown这确实为这个问题提供了答案。因为我的问题的特点是一个问题,这就是它如何解决我的问题。