无法访问在单独的Docker容器中运行的Postgres

时间:2018-08-18 09:58:20

标签: postgresql docker

我有一个docker 17.05.0-ce,在ubuntu服务器16.04 LTS上构建89658be。 我有一个运行在容器中的Postgres,暴露了端口5432。

我可以从除psql只是超时的同级容器之外的任何地方连接它。作为地址,我使用主机的IP。从客户端执行Ping操作,但无法使用psql connect。

我知道我可以使用合并的Postgres服务创建一个docker-compose,但是我不想-我想将它们完全分开。

有什么办法解决问题吗?

3 个答案:

答案 0 :(得分:0)

您要为此使用--net=host

添加一个类似问题的answer

要快速解决此问题,您可以运行带有标志--net=host的所有容器,这意味着docker容器将使用主机网络接口。可以在here中找到有关docker网络的更多信息。

答案 1 :(得分:0)

您必须将两个容器都放在同一个docker网络上,以便他们能够彼此交谈。

docker network create funny

然后启动您的容器连接到网络

docker run database_container --net=funny --name=database

docker run app_container --net=funny --name=app

执行完此操作后,就可以使用在run命令中指定的名称连接到每个容器。

答案 2 :(得分:0)

将-c'listen_addresses = *'传递给docker run命令行,这将允许postgress接受来自远程计算机的连接:

docker run --name postgres -p 5432:5432  -ePOSTGRES_DB=pgdb -e POSTGRES_USER=user -e POSTGRES_PASSWORD=pass -d postgres -c 'listen_addresses=*'