从psycopg2本地机器上连接到PostgreSQL分贝上泊坞

问题描述:

我已经使用下面的命令来创建具有在其上运行的Postgres一个泊坞图像:从psycopg2本地机器上连接到PostgreSQL分贝上泊坞

docker pull postgres docker run --name test-db -e POSTGRES_PASSWORD=my_secret_password -d postgres

我然后创建的表称为测试并插入一些随机数据分成几行。 我现在试图在本地机器上通过Python中的psycopg2建立一个到这个数据库表的连接。 我用命令docker-machine ip default找出本机的IP地址为192.168.99.100,并使用我下面尝试连接:

conn = psycopg2.connect("dbname='test-db' user='postgres' host='192.168.99.100' password='my_secret_password' port='5432'") 

这是不符合“OperationalError错误信息工作:不能连接到服务器:连接被拒绝(0x0000274D/10061)“

。 。

一切似乎都是为了让我无法想象为什么会被拒绝。 根据此postgres图像的文档(位于https://hub.docker.com/_/postgres/),此图像包含EXPOSE 5432(postgres端口),默认用户名为postgres。

我也尝试将图片本身的IP地址与我在SA上找到的docker inspect test-db | grep IPAddress | awk 'print{$2}' | tr -d '",'关联到一个稍微相关的文章,但该IP地址也不起作用。

+0

您是否试过用'psql'等不同的客户端连接? – Chris

EXPOSE指令可能不符合您的期望。它用于Docker网络内部的链接和容器间通信。从Docker桥接网络外部连接到容器时,需要使用-p发布到端口。尝试添加-p 5432:5432docker run命令,这样它看起来像:

docker run --name test-db -e POSTGRES_PASSWORD=my_secret_password -d -p 5432:5432 postgres 

这里是发布和暴露的端口之间的区别一个体面的解释:https://stackoverflow.com/a/22150099/684908。希望这可以帮助!