docker的新手,我正在try 通过localhost将我的pgAdmin容器连接到postgres容器.

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
0b00555238ba        dpage/pgadmin4      "/entrypoint.sh"         43 minutes ago      Up 43 minutes       0.0.0.0:80->80/tcp, 443/tcp   pedantic_turing
e79fb6440a95        postgres            "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:5432->5432/tcp        pg-docker

我成功地连接了psql命令.

psql -h localhost -U postgres -d postgres

但是,当我在pgAdmin上使用与psql相同的参数创建服务器时,我得到了以下错误.

无法连接到服务器:

无法连接到服务器:连接被拒绝服务器正在运行吗

我成功地通过容器上docker inspect给出的IP地址连接.

顺便说一下,我查过postgresql.确认并断言listen_addresses = '*'和pg_hba.包含host all all all md5.

但我不明白,为什么我不能使用本地主机地址?为什么docker给我的地址不是本地的?

推荐答案

在这种情况下:

  1. Pgadmin无法连接到localhost,但psql在docker外部工作.
  2. pgadmin和;Postgres作为容器运行

虽然您尚未指明是否要这样做,但理想情况下,这两个容器都可以是自动DNS解析的自定义bridge network的一部分.

如果没有明确添加,它们将成为默认网桥网络的一部分.

要查找docker运行时中创建的网络,请键入:

控制台中会列出一些网络,也许你会找到一个[name]_default它应该是你的网络.

处决

不要在pgAdmin new server对话框中使用localhost作为服务器名/ip,而是连接到postgres实例的"IPv4Address".

在我的例子中,172.18.0.2:5432岁的时候连接就像一个魔咒.

Postgresql相关问答推荐

为MCV扩展统计设置统计目标

在Postgre中的链接服务器上执行远程查询

EF Core和npgsql连接池已被耗尽

返回行值和行计数的总和

如何在不同的行中显示两列,避免重复并省略空条目

EF Core添加迁移目标postgreeSQL返回无法加载类型'Microsoft.EntityFrameworkCore.Storage.IRelationalValueBufferFactoryFactory

使用 select 在带有特殊字符的字符串中查找数据

当我写 SELECT ~1;在 Postgresql 上它给了我 -2 结果.这是什么原因?它一直持续〜4和-5等

无法从在 wsl 2 上运行的服务之一连接到在 wsl 2 上的容器中运行的 postgres 数据库

将数组插入 Postgresql 数据库

postgresql查询中的正则表达式不区分大小写

推送到 Heroku 时出现带有 Postgres 的 Rails 迁移错误

SELECT INTO 具有多个归因

使用 try/except 与 psycopg2 或with closing?

如何使 Java 和 Postgres 枚举一起工作以进行更新?

SQLAlchemy 和多个进程的连接问题

在 postgreSQL 中更改序列名称

如何启动 Postgres 服务器?

Postgresql 对象 ID 和元组

JOIN (SELECT ... ) ue ON 1=1?