我有一个Vagrant框,其中有一个运行PostgreSQL的Docker容器。容器是官方发现的here
我希望能够使用psql从主机(即Vagrant之外)连接到Postgres但无法使其工作。 (获取“无法连接” - 错误)。我在Vagrantfile中添加了一个端口:
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
但我猜这是不够的,因为Docker容器有自己的IP(172.17.0.2)?我的想法是,我会在框上放置一个iptable规则,将所有请求转发到端口5432上的Vagrant框到目标172.17.0.2:5432,如下所示:
def cpu_load(treshold):
import numpy as np
import time
start = time.time()
while time.time() - start < treshold:
a = np.random.random([1000, 1000])
b = np.random.random([1000, 1000])
c = np.mean(a*b)
但我仍然无法使其发挥作用。感谢任何帮助!
答案 0 :(得分:1)
无需在外部添加iptables
规则。流浪港转发将自行解决。
检查以下几点:
Vagrantfile
中提供IP以转发该IP和端口。像guest_ip(string) - 将转发端口绑定到的guest虚拟机IP。如果 如果没有设置,端口将转到每个IP接口。默认情况下, 这是空的。
host_ip(string) - 要绑定转发的主机上的IP 港口。如果未指定,则将绑定到每个IP。默认情况下, 这是空的。
如果一切正常,您可以使用以下命令进行连接:
psql -p 5432 -d db_name -U user -h localhost
不要忘记添加-h
主机名或IP。另见这些答案:
1。unable to connect to forwarded port over ssh
2。Accessing to a remote PostgreSQL server using port forwarding to another machine