我对 docker 镜像、容器以及将正在运行的容器链接在一起的所有逻辑都还很陌生,所以如果这个问题听起来太愚蠢,请耐心等待。
我正在尝试在 Google Container Engine 服务上设置一个工作的 DB(PostgreSQL)服务器,并从在同一集群上运行的其他 docker 镜像连接到它。
我已经建立了一个谷歌云项目,启用了云容器 API,创建了容器集群并运行了 postgres 官方 Docker 镜像postgres:最新。 到目前为止,一切都很好。
问题来了:当我将 root bash 控制台附加到正在运行的实例时,我可以通过 psql 命令进行连接而不会出现问题。
但是,当我尝试从不同的机器连接到它时(即使启用了对服务的外部访问并让其通过防火墙(ping 命令在我的本地机器上运行),每次访问都会失败并出现以下错误消息:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
我通过经典方式连接:
psql -h xxx.xxx.xxx.xxx -U myuser -W -d somedatabase
有人知道为什么这不起作用吗?
答案1
谢谢大家的回复,我终于找到了解决方案。
也许这会对那些开始尝试在 Google Container Engine 上使用 Docker 的人有所帮助。
这里的问题是正确配置端口号及其各自的名称在 pod 定义中。如果没有名称,端口将无法工作(至少看起来是这样)。一旦我添加了端口名称,连接就会顺利进行。