Docker容器和Gcloud端口转发

时间:2018-10-25 13:53:10

标签: docker networking docker-compose gcloud portforwarding

我的本​​地计算机上运行着一个Docker容器,我需要调用一个REST,该REST在Google Cloud Platform的专用VPN上公开。

让我们说该REST是由计算机 external.service.com 公开的。 为了从本地计算机访问它,我执行了以下步骤:

  1. 在che Google Cloud SDK Shell上运行命令:gcloud compute ssh test-2 --ssh-flag="-L 2001:192.168.0.10:100"。其中 192.168.0.10:100 是与VPN内部的 external.service.com 相对应的IP。这使我可以从 localhost:2001

  2. 到达该IP
  3. 在Windows 10上的主机文件中添加以下行:127.0.0.1 external.service.com

现在在Postman上,我可以通过URL https://external.service.com:2001/api到达“私有” REST服务

出于测试目的,我应该从本地计算机上运行的Docker容器获得相同的REST服务。 我知道要从Docker容器访问主机,我需要使用机器活动接口的IP,因为每个Docker容器都将自身引用127.0.0.1。

因此,我在docker-compose.yml中添加了以下属性:

   extra_hosts:
      - "external-service.com:192.168.xxx.x"

其中192.168.xxx.x是我的IP地址。

鉴于此信息,调用Docker容器内 external.service.com 公开的REST服务,我得到以下错误:

org.apache.http.conn.HttpHostConnectException: Connect to external.service.com:2001 [external.service.com/192.168.137.1] failed: Connection refused (Connection refused)

最后,不能说Docker将 external.service.com 转换为 localhost:2001 (192.168.xxx.x:2001) 以达到Google Cloud端口转发可访问的REST服务。

您能帮我看看我在做什么错吗?

0 个答案:

没有答案