PgAdmin 不适用于 Postgres 容器

问题描述

我正在使用以下命令连接到 postgresql docker 服务:

docker create --name postgres-demo -e POSTGRES_PASSWORD=Welcome -p 5432:5432 postgres:11.5-alpine
docker start postgres-demo
docker exec -it postgres-demo psql -U postgres

我可以成功连接到postgresql conatiner服务

enter image description here

现在我想连接到 PgAdmin4 对 postgres 数据库中的现有数据进行一些查询 但是我一直有这个错误

enter image description here

我使用的 IP 地址是我从 docker inspect DOCKERID 中提取的地址

enter image description here

我在 Windows 上重新启动了 postgresql 服务,但没有任何反应。我做错了什么?

谢谢

解决方法

其实用docker inspect(172.17.0.2)得到的只是容器的ip,要访问容器中的服务,需要将主机的端口绑定到容器的端口。

我看到你已经使用了 -p 5432:5432 来做这件事,所以请使用 ip a s 获取主机的 ip,然后如果你得到例如10.10.0.186,然后使用这个主机ip访问服务,使用5432作为端口。

要为我们的容器发布端口,我们将在 docker run 命令中使用 --publish 标志(简称 -p)。 --publish 命令的格式为[主机端口]:[容器端口]。因此,如果我们想将容器内的 8000 端口暴露给容器外的 3000 端口,我们会将 3000:8000 传递给 --publish 标志。

一张图让你知道 docker 网络的拓扑结构,仅供参考:

enter image description here

,

您应该尝试连接到:

host: 0.0.0.0
port: 5432

当您的 docker 容器启动并运行时。