【问题标题】:Cannot access postgres database inside of a docker container run with docker toolbox无法访问使用 docker 工具箱运行的 docker 容器内的 postgres 数据库
【发布时间】:2020-05-13 12:28:38
【问题描述】:

我正在使用 docker toolbox 在 windows 10 home 上运行 docker,但我似乎无法访问在容器中运行的 postgres 数据库。

数据库肯定正在运行,因为我可以使用docker container ls 看到容器。

数据库的端口5432好像已经发布了,在虚拟机上运行netstat -atn就可以看到。 netstat 显示

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 :::5432                 :::*                    LISTEN

据我了解,我现在应该可以使用 docker 机器 IP 地址 (192.168.99.100) 以及端口号 (5432) 访问它。但是,这似乎不起作用。

然后我尝试将端口添加到 vm 的端口转发,来宾和主机端口都为 5432,并将主机和来宾的 IP 留空。但我仍然无法访问它。

我试过数据库连接的主机是localhost和192.168.99.100,什么都没有。

我可以通过 ping 和 ssh 访问 192.168.99.100。

我尝试过全新安装,将其关闭再打开,我见过无数针对类似问题提出的其他解决方案,但似乎没有任何效果。


这也不仅限于这个 postreg 数据库,似乎托管在默认机器的容器中的任何内容都无法从主机访问。我也尝试过容器中的 Web 服务器,但没有成功(我没有尝试过其他任何东西,因为这超出了我的知识范围)

【问题讨论】:

    标签: docker virtual-machine virtualbox docker-toolbox


    【解决方案1】:

    您是如何尝试访问 Postgres 容器的? 如果您尝试通过在 Web 浏览器中输入 http://192.168.99.100:5432 来使用 HTTP 访问它;它可能无法正常工作,因为大概没有网络服务器在您正在使用的 postgres 图像上侦听 HTTP 请求。

    您能否尝试运行docker run -p 8080:80 nginx,然后在网络浏览器中访问http://192.168.99.100:8080。还可以通过运行docker-machine ip <name-of-machine> 确保这是正确的 IP 地址 - 只是为了确保...

    【讨论】:

    • 我正在尝试通过一些 cs 库来访问它,但我不记得是哪个,因为我正在开发一个程序的分支。但是我会再给网络服务器测试一次并报告
    • 我已经使用docker-machine ip default(默认是机器的名称)确认IP是正确的,并且一旦nginx通过docker运行就导航到192.168.99.100:8080导致它显然可以工作!我将重试我之前运行的程序,这可能是一个问题。无论哪种方式,这确实解决了它无法连接的问题,(那个问题是我没有意识到这不是问题)所以谢谢!
    • 对于那些想知道真正问题的人:我从错误的目录运行我的程序,所以配置文件没有被检查
    猜你喜欢
    • 2019-10-05
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多