[英]Can't connect on postgres in docker container
我在 Windows 上使用 Docker 在本地 postgres 數據庫中使用。 我制作了兩個 docker 容器:一個用於名為 pg 的數據庫,另一個用於 pgadmin 和 pgadmin4。 檢查 pg 后,我將 pgadmin4 連接到 172.17.0.3:5432 並且它可以工作。 現在是時候編碼了,但是......
psycopg2.OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
Is the server running on host "172.17.0.3" and accepting
TCP/IP connections on port 5432?
我讀了很多這樣的問題,但我無法弄清楚。 對我來說,這似乎不像在 pg_hba.conf 中為被拒絕的連接生成的問題,因為在這種情況下 pgadmin 不應該工作,對吧? (但是如果pg_hba.conf有問題我在哪里可以找到它?在docker安裝文件夾中我沒有找到它)
我把我的 python 代碼放在這里,但似乎沒有問題:
conn = psycopg2.connect(
database = 'example',
user = 'username',
password = 'secretpassword',
host = '172.17.0.3', # default port is 5432 so it's not necessary
)
升級編輯:我在 postgresql.conf 中找到了 listen_addresses = '*' 的配置,這是正確的。 在 pg_hba.conf 中:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
您可以使用docker run
和--expose
參數在每個容器上公開您的端口。
您可以運行的另一個命令是docker network connect
,它允許您將容器連接到網絡,因此如果兩個容器位於同一網絡上,它們應該能夠相互通信。
用法是docker network connect [OPTIONS] NETWORK CONTAINER
使用docker network create
命令的一個優點是能夠創建 --ip --ip-range
以便指定要在網絡上使用的 ip 地址。
之后,您可以分配一個容器以具有特定的 ip 地址, docker network connect
。 例如,如果容器不在網絡上,則不會將 ip 地址重新分配給網絡上的另一個容器。
docker 文檔中的更多信息, https://docs.docker.com/engine/reference/commandline/network_connect/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.