我创建了一个Docker Container,如下所示:
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.