问题描述
我正在使用以下命令连接到 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服务
现在我想连接到 PgAdmin4 对 postgres 数据库中的现有数据进行一些查询 但是我一直有这个错误
我使用的 IP 地址是我从 docker inspect DOCKERID 中提取的地址
我在 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 网络的拓扑结构,仅供参考:
,您应该尝试连接到:
host: 0.0.0.0
port: 5432
当您的 docker 容器启动并运行时。