端口转发不适用于 docker postgres

Ports forwarding does not work for docker postgres

我想设置一个带有 postgres 数据库的 docker 容器。为此,我使用以下命令:

sudo docker run --name postgres-demo -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgres

容器启动,运行正常。我可以在其中使用 docker exec 并在容器中使用 运行 psql。 端口转发有问题。当我尝试在我的机器(外部容器)上执行命令 psql 时,我收到一条消息:psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我的操作系统是 Manjaro 21.2.6。

您必须指定 postgre 的主机名。容器的主机名通常是 0.0.0.0.

$ psql --help
  ...
  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
$ docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS         PORTS                                       NAMES
605b59525844   postgres   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   postgres-demo
$ psql --host=0.0.0.0 --username=postgres
Password for user postgres: 
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1), server 14.2 (Debian 14.2-1.pgdg110+1))
WARNING: psql major version 12, server major version 14.
         Some psql features might not work.
Type "help" for help.

postgres=#