【发布时间】:2014-10-13 15:08:42
【问题描述】:
我正在使用 Docker,我想 Dockerize 一个 Postgres 容器。
我在关注官方example,但是无法连接到使用psql运行的镜像。
我使用示例的内容创建了 Dockerfile。我从 Dockerfile 构建了一个图像并为其分配了一个名称。然后我运行 PostgreSQL 服务器容器(在前台)。
~/test » docker run --rm -P --name pg_test eg_postgresql
2014-10-10 06:12:43 UTC LOG: database system was interrupted; last known up at 2014-10-10 06:12:29 UTC
2014-10-10 06:12:43 UTC LOG: database system was not properly shut down; automatic recovery in progress
2014-10-10 06:12:43 UTC LOG: redo starts at 0/1782F68
2014-10-10 06:12:43 UTC LOG: record with zero length at 0/1782FA8
2014-10-10 06:12:43 UTC LOG: redo done at 0/1782F68
2014-10-10 06:12:43 UTC LOG: last completed transaction was at log time 2014-10-10 06:12:29.2487+00
2014-10-10 06:12:43 UTC LOG: database system is ready to accept connections
2014-10-10 06:12:43 UTC LOG: autovacuum launcher started
然后我打开另一个终端找出端口:
~/test » docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aaedb0479139 eg_postgresql:latest "/usr/lib/postgresql 3 days ago Up 41 seconds 0.0.0.0:49154->5432/tcp pg_test
所以我可以使用 psql 连接到实例。但我不能...
~/test » psql -h localhost -p 49154 -d docker -U docker --password
Password for user docker:
psql: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 49154?
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 49154?
could not connect to server: Connection refused
Is the server running on host "localhost" (fe80::1) and accepting
TCP/IP connections on port 49154?
感谢任何帮助。
【问题讨论】:
-
是否使用容器链接'?
-
是的,确实如此。但我希望能够从我的主机系统进行连接。
-
netstat | grep 49154说什么? -
如果你使用 5433:5432 它不会暴露 5433 端口,你会得到连接被拒绝。只要将其更改为“5433:5432”,它就会起作用。用官方的 postgres:13.2 镜像测试(也有 13 个)。
标签: postgresql docker psql