从 Windows 10 PgAdmin 连接安装在 Hyper-V Ubuntu 中的 docker 中的 PostgreSQL

Kri*_*lla 4 windows postgresql ubuntu docker

我需要帮助从 Windows 10 PgAdmin 连接安装在 HyperV ubuntu 18.4 中的 Docker 中的 PostgreSQL。到目前为止,我尝试了以下

第 1 步:在 Docker 中安装 Postgres(在 Hyper-V 上运行的 Ubuntu)

sudo docker run -p 5432:5432 --name pg_test -e POSTGRES_PASSWORD=admin -d postgres
Run Code Online (Sandbox Code Playgroud)

第 2 步:创建数据库

docker exec -it pg_test bash
psql -U postgres
create database mytestdb
Run Code Online (Sandbox Code Playgroud)

第三步:获取ip地址

sudo docker inspect pg_test | grep IPAddress
//returned with 172.17.0.2
Run Code Online (Sandbox Code Playgroud)

第 4 步:pg_hba.conf

host    all             all             0.0.0.0/0               md5
Run Code Online (Sandbox Code Playgroud)

第 5 步:当我尝试从 Windows PgAdmin 4 连接时,出现以下错误 - 注意:我也尝试使用 UBUNTU VM IP 地址,但没有成功 在此处输入图片说明

Raj*_*rma 5

您的情况是您尝试从另一个子网连接到 postgres,即如果您不使用桥接协议,则从 windows 子网到管理程序子网。

所以情况1:

  1. 如果这是在 NAT\HOST 上而不是在网桥上,那么您需要确保能够从 Windows 服务器 ping ubuntu 服务器。
  2. 接下来是确保端口从 ubuntu 端打开。您如何检查,从 Windows cmd 提示符对端口号执行 telnet。

    远程登录 192.168.0.10 5432

如果您已桥接并且您也可以 ping 服务器,请检查是否打开了 telnet 工作的端口。您需要确保 postgres.conf 文件中的“监听地址”为“*”。这就是全部。

再次从 ubuntu 的操作系统级别运行命令systemctl stop firewalld以停止防火墙,然后尝试连接。如果这有效,那么您需要使用以下命令在防火墙中打开端口:

firewall-cmd --permanent --add-port 5432/tcp
Run Code Online (Sandbox Code Playgroud)

我可以从你的 docker image 中看到 5432 已经打开。这更多是端口映射和防火墙的东西。