Postgresql 无法从本地计算机连接到docker容器中的postgres数据库

Postgresql 无法从本地计算机连接到docker容器中的postgres数据库,postgresql,docker,Postgresql,Docker,我对docker和postgres有一个奇怪的问题。我无法从本地计算机连接到docker容器内的psql 首先,我使用以下命令创建了容器: docker run-d-p 5432:5432——命名我的postgres-e postgres\u PASSWORD=mysecretpassword postgres 之后,我使用以下命令执行容器: docker exec-it my postgres bash 在容器内部,我与postgres用户启动了psql: psql-U postgres 我创

我对docker和postgres有一个奇怪的问题。我无法从本地计算机连接到docker容器内的psql

首先,我使用以下命令创建了容器:
docker run-d-p 5432:5432——命名我的postgres-e postgres\u PASSWORD=mysecretpassword postgres

之后,我使用以下命令执行容器:
docker exec-it my postgres bash

在容器内部,我与postgres用户启动了psql:
psql-U postgres

我创建了一个新数据库:
创建数据库mytestdb

所有东西都在容器中工作,但是如果我想从我的机器连接到它,它只显示我机器上的数据库。我尝试连接到postgres:
psql-h localhost-p5432-U postgres

我应该展示这样的东西:

                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 mytestdb  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(4 rows)
但我得到的却是:

                                          List of databases
      Name       |      Owner      | Encoding | Collate | Ctype   |        Access privileges          
-----------------+-----------------+----------+---------+---------+----------------------------------
 user            | user            | UTF8     | C       | C       | 
 postgres        | user            | UTF8     | C       | C       | 
 template0       | user            | UTF8     | C       | C       | =c/user                 +
                 |                 |          |         |         | user =CTc/user
 template1       | user            | UTF8     | C       | C       | =c/user                 +
                 |                 |          |         |         | user =CTc/user
(4 rows)

(END)

在每一个教程中,我都看到他们这么做了,但对我来说,这不起作用。因此,请帮助我。

问题在于创建数据库时。
创建数据库mytestdb
您忘记添加
命令应该类似于
CREATE DATABASE mytestdb


然后你就有了数据库,你可以通过这些命令从容器或主机内部访问它

我已经创建了数据库,我只是忘记了
在我的问题中。你能用另一个端口尝试同样的过程吗?5000例如:
docker run-d-p 5000:5432——将我的postgres-e postgres_PASSWORD=mysecretpassword postgres
命名,然后在主机上:
psql-h localhost-p 5000-U postgres
问题不在于数据库创建,因为您可以看到它已经检索了容器中的数据库,我想的是,可能您主机上的端口5432已经在监听另一个db,这就是您在连接
psql-h localhost-p 5432-U postgres
@J-Mous时看到的端口。我把它改成了5000,它成功了。感谢您执行
ss-tln
以查找谁正在侦听您计算机接口上的端口5432。此命令无效。请尝试
netstat-tln
。你在运行什么操作系统?我在运行macOS。这个命令有效,我得到了很多数据,但我不明白。你的机器上安装了postgres吗?请尝试更改端口,然后重试