如何使postgresql数据库可以从postgres docker容器外部连接?

时间:2015-09-22 14:26:22

标签: linux sockets docker debian

我正在使用postgres:9.3来自官方码头中心的docker容器

https://hub.docker.com/_/postgres/

使用命令

启动数据库容器
docker run -d -e POSTGRES_PASSWORD=mysecretpassword -p 25432:5432 --name osm-database osm-database

并使用来自另一个容器(osm-updater)的docker链接连接到它

docker run -d --link osm-database --name osm-updater osm-updater

现在我发现我无法从osm-updater容器向数据库psql,获取错误

psql: could not connect to server: Connection refused
Is the server running on host "172.17.0.12" and accepting
TCP/IP connections on port 5432?

所以我用

探索了 osm-database容器中的网络套接字
netstat -tulpn

结果

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN

在osm-database容器中显示,postgres db只能连接到127.0.0.1,这是错误的?应该是0.0.0.0:5432?

所以我无法使用像

这样的命令从osm-update连接到osm-database
psql -U postgres -p 5432 -h 172.17.0.12

172.17.0.12是使用(docker inspect命令)

获得的ip_address

我该如何解决这个问题?我怎么能改变"本地地址"网络插座的列

1 个答案:

答案 0 :(得分:0)

您实际上想要使用机器的eth0。如果您在Linux中,可以通过ifconfig获取它并连接到端口25432上的数据库,因为这是您正在公开的端口。