如何连接到OSx上的Docker容器中运行的postgres?

时间:2017-11-06 19:10:57

标签: macos postgresql docker

我在OSx上的Docker容器中运行了postgres。起初我尝试在本地连接它。我用以下内容启动了容器:

docker run -i -d -h localhost -p 5432:5432 --name some-postgres -t my-postgres:9.6 postgres

经过一番挖掘,我发现你无法通过OSx上的localhost连接它,你需要连接到docker内部使用的ip地址。所以我使用docker-machine192.168.99.100:2376创建了一个虚拟机。但是,我仍然无法通过192.168.99.100:5432连接到postgres。我错过了什么?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

这是一个如何使用Docker for Mac启动Postgres的工作示例。它与你的例子相似。

请注意,这是不是 docker-machine,所以网络的工作方式可能不同。

docker run --rm -it \
-p 5432:5432 \
-e POSTGRES_USER=user-ms \
-e POSTGRES_PASSWORD=12345 \
postgres

我尝试从Docker主机建立连接...

Localhost工作:

psql --user user-ms -h localhost

本地IP地址也有效:

psql --user user-ms -h "$(ifconfig \
| grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" \
| grep -v 127.0.0.1 \
| awk '{ print $2 }' \
| cut -f2 -d: \
| head -n1)"

答案 1 :(得分:1)

如果你有适用于Mac的Docker,那么它应该按原样localhost运行:https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds