簡體   English   中英

無法連接 docker 容器中的 postgres

[英]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.

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