簡體   English   中英

無法遠程連接到 Postgres Docker 容器

[英]Can't connect to Postgres Docker container remotely

我有一個使用官方 Postgres docker 映像在 centos 機器上運行的 docker 容器,但它無法遠程連接。 sudo docker ps | grep postgres sudo docker ps | grep postgres給出

492192ff9170 postgres "/docker-entrypoint.s" 2 年前 上升 18 小時 0.0.0.0:5432->5432/tcp postgres

當我在另一台機器上嘗試psql -h <server domain name> -p 5432 -U postgres時,它只是打印出來

psql:無法連接到服務器:操作超時
服務器是否在主機 [域名]([ip 地址])上運行並接受端口 5432 上的 TCP/IP 連接?

我做了sudo iptables -S | grep 5432 遠程服務器上的sudo iptables -S | grep 5432並打印出來

-一個碼頭工人 -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 5432 -j 接受

所以看起來port 5432被阻止

在容器/var/lib/postgresql/data/
host all all 0.0.0.0/0 md5已添加到pg_hba.conf ,而postgresql.conf已指定listen_addresses = '*'

盡管如此,它仍然無法遠程訪問,盡管我可以使用psql -h localhost -p 5432 -U postgres在本地成功連接到實例

任何人都可以對這個問題有所了解嗎? 非常感激。

你是怎么開始使用postgres容器的?

可能你只是缺少容器到主機端口綁定選項。

嘗試將-p 5432:5432添加到docker run命令。 這會將容器中的端口5432映射到Docker主機(遠程服務器)上的端口5432。

有關更多信息,請參閱docker網絡文檔 另見這個postgres示例

我遇到了類似的問題,我無法遠程連接到 docker 容器中的 postgres 數據庫。 我敲了敲腦袋 2 天,直到我找到了解決方案。

我按以下方式配置了我的端口: -p 5438:5432 換句話說,我試圖在我的主機上公開端口 5438。

事實證明,我的主機是一台安裝了 Ubuntu 的 Azure VM。 我終於記得在 Azure 門戶的“網絡”選項卡下有一個“入站端口規則”列表。

好吧,我需要打開端口 5438。我這樣做了,然后它就開始工作了。 根本不是 docker config 的問題。
Azure 入站端口規則

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM