运行 OSRM docker 在远程机器上

Running OSRM docker on remote machine

我正在尝试 运行 OSRM docker 在远程机器上。我遵循了 https://github.com/Project-OSRM/osrm-backend

中提到的设置说明
wget http://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/berlin-latest.osm.pbf

docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-partition /data/berlin-latest.osrm
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-customize /data/berlin-latest.osrm

docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld /data/berlin-latest.osrm

执行上述指令后,我可以 运行 docker 并且可以得到本地结果。

// this gives me proper response.
curl "http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"

// but when I tried with my remote machine IP then is giving
// Failed to connect to my_remote_ip port 5000: Connection timed out
curl "http://my_remote_ip:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true"

只是发布一个基于 的答案来解释使用 GCE 实例时的防火墙范围。

Linux/Windows 防火墙规则(iptablesfirewalld 等)将在操作系统级别 运行。但是,请考虑实例本身存在于运行自己的防火墙规则的 VPC 中。

这意味着如果您有传入请求,它将在进入实例之前先到达 VPC。这意味着您需要从 OS 防火墙 单独 管理 GCE 防火墙级别的流量。

The VPC firewall also controls traffic going from the instance to the internet and from instance to instance:

Firewall rules apply to both outgoing (egress) and incoming (ingress) traffic in the network. Firewall rules control traffic even if it is entirely within the network, including communication among VM instances.

最后还是要考虑在这两个地方都配置规则,避免出现这种情况。