在Vagrant中访问Docker容器中运行的PostgreSQL
我有一个流浪者盒子,里面有一个运行PostgreSQL的Docker容器。这个集装箱是官方发现的 我希望能够使用psql从主机(即在Vagrant之外)连接到Postgres,但无法让它工作。(获取“无法连接”-错误)。我在文件中添加了一个端口转发:在Vagrant中访问Docker容器中运行的PostgreSQL,postgresql,docker,vagrant,iptables,Postgresql,Docker,Vagrant,Iptables,我有一个流浪者盒子,里面有一个运行PostgreSQL的Docker容器。这个集装箱是官方发现的 我希望能够使用psql从主机(即在Vagrant之外)连接到Postgres,但无法让它工作。(获取“无法连接”-错误)。我在文件中添加了一个端口转发: config.vm.network "forwarded_port", guest: 5432, host: 5432 但我猜这还不够,因为Docker容器有自己的IP(172.17.0.2)?我的想法是,我会在该框上放置一条iptable规则,
config.vm.network "forwarded_port", guest: 5432, host: 5432
但我猜这还不够,因为Docker容器有自己的IP(172.17.0.2)?我的想法是,我会在该框上放置一条iptable规则,将所有请求转发到端口5432上的流浪者框到目的地172.17.0.2:5432,如下所示:
iptables -t nat -A PREROUTING -p tcp --dport 5432 -j DNAT --to-destination 172.17.0.2:5432
iptables -t nat -A POSTROUTING -j MASQUERADE
但我还是不能让它工作。谢谢你的帮助 无需在外部添加
iptables
规则。漂泊的港口货运将自行处理
检查以下几点:
Vagrantfile
中提供IP以转发该IP和端口。像psql -p 5432 -d db_name -U user -h localhost
不要忘记添加带有主机名或ip的-h
。另请参见以下答案:
一,
2.啊,我真傻。我错过了需要显式添加
-h localhost
,我认为这是默认设置。当我补充说它有效时。谢谢