当前位置: 首页 > 知识库问答 >
问题:

无法连接docker容器中的postgres

壤驷瑾瑜
2023-03-14

我正在使用Windows上的Docker来使用本地的postgres数据库。我制作了两个docker容器:一个用于名为pg的数据库,另一个用于名为pgadmin的pgadmin4。检查完pg后,我在172.17.0.3:5432连接了pgadmin4,它工作了。现在该编码了,但是...

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.conflisten_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

共有1个答案

严兴言
2023-03-14

您可以使用<code>docker run--expose

您可以运行的另一个命令是 docker 网络连接,它允许您将容器连接到网络,因此,如果两个容器位于同一网络上,它们应该能够相互通信。

用法是docker网络连接[选项]网络容器

使用< code>docker network create命令的一个优点是能够创建一个< code> - ip-range来指定要在网络上使用的ip地址。

之后,您可以为容器分配一个特定的ip地址,即< code > docker network connect 。例如,如果容器不在网络上,则ip地址不会被重新分配给网络上的另一个容器。

docker 文档中的详细信息,https://docs.docker.com/engine/reference/commandline/network_connect/

 类似资料:
  • 我已经创建了一个MySQL数据库的映像,并在容器中运行它。我希望它在端口3406/3407上运行,因此我调用docker run命令如下所示: 如果我看我的容器,它看起来是这样的: 我非常想连接到我的数据库现在,但我似乎不能使我的URL工作。 这是我的URL的样子:

  • 问题内容: 我有用于创建mysql映像的docker- compose文件,并将端口公开给3306,但是当我尝试安装CMS时,出现了无法连接数据库的错误。我尝试扫描端口3306,并向我显示它已打开,因此mysql正在运行。 为什么两个Docker容器彼此看不到? 这是我的docker-compose文件: 问题答案: 要连接到数据库,请使用您作为主机名提供的链接/别名。因此,您的CMS可以使用主机

  • 问题内容: 计划 我希望我的tomcat服务器能够在单独的容器中连接到我的MySQL服务器。 问题 Tomcat无法连接到MySQL 我使用了wordpress教程中的一些详细信息,这些信息涉及与mysql容器建立链接并创建指向MySQL的链接。 尽管tomcat和mysql旋转得很好,但我似乎无法使tomcat能够连接到MySQL,但是这些设置在我的本地计算机上也可以正常运行。 我也尝试使用它,

  • 我在这个repo中用2个图像制作了3个docker容器,使用MongoDB公共图像制作了1个。我使用 < code>docker-compose.yaml是: 但是MongoDB无法与节点服务器连接,并给出了以下错误: < code>backend/db.js的代码: 添加mongouri作为环境变量后的终端输出: 新错误:

  • 我正在使用以下代码,但我的本地站点无法连接到DB docker run--name db-p 90:3306--restart=always--network wp mysql network-e mysql\u ROOT\u PASSWORD=ROOT-e mysql\u DATABASE=wordpress-e mysql\u USER=wpuser-e mysql\u PASSWORD=P@