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

问题描述 投票:0回答:3

我在 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-machine
192.168.99.100:2376
创建了一个虚拟机。但是,我仍然无法通过
192.168.99.100:5432
连接到 postgres。我缺少什么?任何帮助将不胜感激。

macos postgresql docker
3个回答
3
投票

以下是如何使用 Docker for Mac 启动 Postgres 的工作示例。这和你的例子很相似。

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

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

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

本地主机工作:

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)"

2
投票

如果您有 Mac 版 Docker,那么它应该可以按原样运行

localhost
https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds


0
投票

这里

“Mac、Windows 和 Linux 的 Docker Desktop 版本 4.29 及更高版本也支持主机网络作为 Beta 功能。要启用此功能,请导航到“设置”中的“开发中的功能”选项卡,然后选择“启用主机网络”。”

使用 --net=host 为容器启用主机网络

docker run --name postgres -e POSTGRES_PASSWORD=my_password --net=host postgres

这允许我从 MacOS Sonoma 14.5 上的主机终端访问容器中的 postgres

© www.soinside.com 2019 - 2024. All rights reserved.