【问题标题】:Can't connect Docker + PostgreSQL 9.3无法连接 Docker + PostgreSQL 9.3
【发布时间】:2016-04-05 01:33:31
【问题描述】:

谁能帮我解决这个问题?我正在使用 Mac OS X El Capitan + Docker。

我的镜像的 Dockerfile:

https://gist.github.com/andrealmar/bce56f7d8450990333703aa5c4ac8d61

我运行我的容器:

docker run andrealmar/postgresql:9.3

docker ps 显示我的容器正在运行,我执行 docker inspect 以查看容器的 IP 地址:

docker inspect 8e65f4dec821 | grep IPAddress

输出:

"SecondaryIPAddresses": null,
    "IPAddress": "172.17.0.2",
        "IPAddress": "172.17.0.2",

当我尝试使用 psql 连接时:

psql -h 172.17.0.2 -U docker docker

它给了我一个超时错误。

psql: could not connect to server: Operation timed out
    Is the server running on host "172.17.0.2" and accepting
    TCP/IP connections on port 5432?

我也尝试过使用命令:

psql -h 172.17.0.2 -p 5432 -d docker -U docker -W 

但是同样的超时错误发生了......

有人知道我在这里缺少什么吗?

干杯,

【问题讨论】:

    标签: macos postgresql docker dockerfile


    【解决方案1】:

    您正在尝试连接到容器的“内部”(容器-容器)网络。在 OS X 上运行时,docker 守护进程(和容器)在虚拟机中运行。

    如果您想从您的 OS X 机器访问 PostgreSQL 数据库,您需要“发布”容器的端口,以使它们可以公开访问。例如,运行:

    docker run -d -p 2345:5432 andrealmar/postgresql:9.3
    

    在主机(虚拟机)的2345端口上发布容器的5432端口 在你的情况下)。

    要访问,请使用虚拟机的 IP 地址,您可以通过以下方式获取该地址 docker-machine(假设你的虚拟机叫default);

    docker-machine ip default
    192.168.99.100
    

    然后连接;

    psql -h 192.68.99.100 -p 2345 -U docker docker
    

    【讨论】:

    • 非常感谢@thaJeztah,您解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2015-11-18
    • 2019-09-28
    • 2021-08-10
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多