[英]Can't connect to DB located in docker container
我正在尝试在 docker 容器中创建 PostgreSQL DB 并从我的本地计算机连接到它。 在docker-compose.yml
中运行docker-compose up -d
:
version: '3.5'
services:
db:
image: postgres:12.2
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_DB: db
POSTGRES_USER: root
POSTGRES_PASSWORD: root
顺利结束。 没有崩溃,没有什么错误。 但是,当我尝试使用这些凭据通过pgAdmin4
连接到它时:
它对我说:
无法连接到服务器:
致命:用户“root”的密码验证失败
我的操作系统:Windows 10 build(1809)
PostgreSQL 版本(安装在本地机器上):12
Docker 版本:19.03.13,构建 4484c46d9d
更新 1:
重新创建具有不同端口的容器后(现在是 5433:5433), pgAdmin4
错误更改为:
无法连接到服务器:
服务器意外关闭连接这可能意味着服务器在处理请求之前或处理请求时异常终止。
我正在尝试在 docker 容器内创建 PostgreSQL DB 并从我的本地机器连接到它。 在docker-compose.yml
docker-compose up -d
:
version: '3.5'
services:
db:
image: postgres:12.2
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_DB: db
POSTGRES_USER: root
POSTGRES_PASSWORD: root
成功结束。 没有崩溃,错误的东西。 但是,当我尝试使用这些凭据使用pgAdmin4
连接到它时:
它对我说:
无法连接到服务器:
致命:用户“root”的密码验证失败
我的操作系统:Windows 10 build(1809)
PostgreSQL 版本(安装在本地机器上):12
Docker 版本:19.03.13,构建 4484c46d9d
更新 1:
使用不同端口重新创建容器后(现在是 5433:5433), pgAdmin4
错误更改:
无法连接到服务器:
服务器意外关闭连接 这可能意味着服务器在处理请求之前或处理请求时异常终止。
主机名/地址:localhost
端口:5432
您正在尝试连接到本地主机上的 5432 端口。 您确定您的容器正在占用主机 IP 吗?
要使容器与主机 IP 一起运行,请使用 -.network 主机选项运行容器。
docker run --network host <rest of the command>
请注意,如果您使用“-.network host”选项,则不需要端口映射“-p”选项。 阅读https://docs.docker.com.network/host/了解更多信息。
您是否检查过是否清除了本地运行的所有旧实例并且您没有尝试访问旧实例?
您可以使用以下命令清除所有本地 docker 容器: docker rm -f $(docker ps -aq)
获得干净的环境后,您可以尝试在本地再次启动容器,看看是否可以访问该服务。 我将您拥有的内容复制/粘贴到一个干净的docker-compose.yaml
中,并针对该文件运行docker-compose up
- 它有效并且我登录并能够查看pg_user
表。
如果仍然失败,您可以尝试使用以下命令找到 IP: netstat -in | grep en0
netstat -in | grep en0
会显示类似
en0 1500 192.168.1 **192.168.1.163** 15301832 - 9001208 - - -
这显示了容器的外部/可访问 IP。 尝试使用显示的地址(类似于 192.168.1.163)而不是localhost
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.