我创建了一个 Docker 容器,如下所示:
docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=docker library/postgres
我现在想把它连接到Datagrip进行查询。当我尝试在 Datagrip 中设置连接时,它失败了。
DataGrip Connection Failed Error
我从 inspect container <container_id>
获取主机 IP
结果是 172.17.0.2
在港口 5432
.
请参阅图片以供引用。 Config Settings for the container但是,当我尝试连接到 DataGrip 时,连接仍然失败。
有人知道怎么做吗?
最佳答案
DataGrip 无法连接到运行 Postgres 的容器的原因是您没有公开容器的任何端口,在本例中为 5432
。
您获取的容器的 IP 地址,即 172.17.0.2
,是容器在 docker 容器网络中的内部 IP 地址,在您的例子中是 bridge
,默认值如果您未指定 --network={NETWORK}
选项 docker run
,则容器连接到的网络。
虽然有很多方法可以找到容器的“真实”IP 地址,但它们总是过于复杂,无法满足您的需求。 DataGrip 连接到您的 Postgres 容器的最简单方法是发布您的端口 5432
并将其映射到主机的相同端口(或任何其他可用端口),通过运行:
docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=docker -p 5432:5432 library/postgres
带有 -p 5432:5432
选项。
之后,您应该能够通过将 localhost
指定为主机来从 DataGrip 连接到您的容器。 Please see this screenshot for reference.
关于postgresql - Postgres Docker 的 DataGrip 连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47825130/