Docker:不能使用postgres客户端连接数据库容器

我创build了一个docker集装箱。 此数据库容器已成功运行。 我可以连接到这个容器,并查看数据库的所有细节。 这里有一些configuration:

services: db: container_name: db image: postgres:latest ports: - "5432:5432" environment: POSTGRES_USER: abc POSTGRES_PASSWORD: abc POSTGRES_DB: database_dev PGDATA: /var/lib/postgresql/data/pgdata volumes: - postres_volume:/var/lib/postgresql/data/ 

这是我从这个正在运行的容器中检查的信息:

 "NetworkSettings": { "Bridge": "", "Ports": { "5432/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "5432" } ] }, "Networks": { "medusa_default": { "IPAMConfig": null, "Links": null, "Aliases": [ "74f7f48596e3", "db" ], "NetworkID": "d48bbf5453a7c42facda69a8c2c741a20bc18d35238854c00f068bd19119afc4", "EndpointID": "5587658ae084eba71e65fb4712bc75a0ea7c240b600d77d4b4722f5a91818d73", "Gateway": "172.19.0.1", "IPAddress": "172.19.0.5", "IPPrefixLen": 16, "IPv6Gateway": "", } } 

基于这些信息,我尝试了一些postgres客户,如PgAdmin4或Adminer,并使用这些信息:

 host: 172.19.0.5 (get from inspect) port: 5432 (get from inspect) user name: abc (get from docker-compose config) password: abc (get from docker-compose config) database name: abc_dev (get from docker-compose config) 

但所有的客户端无法连接。 我不知道这里有什么问题吗? 请告诉我。

inspect中得到的IP地址是Docker内部networking中的地址,而不是您可以从容器外看到的地址。

由于您在撰写文件( ports下的5432:5432设置)中公开端口,因此只需连接到运行容器的主机Docker上的端口5432即可。 如果您尝试从主机连接Docker, localhost:5432将会工作。