【问题标题】:Accessing docker container IP from a different physical machine从不同的物理机访问 docker 容器 IP
【发布时间】:2015-05-22 22:35:30
【问题描述】:

我在运行 Yosemite 的 MAC 中的 boot2docker 主机上运行的 docker 容器上的 8080 端口托管了一个服务器。

如果我尝试从我的机​​器上 curl 端口(比如 8080)上的 boot2docker IP,我可以访问在 docker 容器中运行的服务器并获得响应。

我感兴趣的是我想从另一台机器向这个服务器发送一个请求并得到响应。我尝试使用 pfctl 添加端口转发规则,但这似乎不起作用。当我在我的机器上执行以下命令时 -

tcpdump -pnti en0 tcp port 8080

在我机器的 IP 上做一个 curl ,我看到有东西在端口 8080 上侦听,但没有响应返回。我们这里有这 2 个层次结构——我的物理机器,在盒子上运行的 boot2docker 和运行服务器的 docker 容器。我怎样才能完成将一台机器的请求发送到另一台将服务器放在 docker 容器中的机器的任务?

谢谢!

【问题讨论】:

  • 您应该能够使用“boot2docker ip”来使用 boot2docker 主机的 IP 地址。这行得通吗?
  • 好吧,这只是允许您从同一台物理机器访问容器,因为 boot2docker 的 IP 无法从另一台机器访问。但我得到了它的工作,将在下面发布解决方案。

标签: macos docker portforwarding boot2docker


【解决方案1】:

我能够使用此命令转发来自另一台机器但在同一网络内的请求 - """

boot2docker ssh -vnNTL :任何端口: boot2docker IP or localhost>: 主机端口映射到容器的端口

""" 示例 - boot2docker ssh -vnNTL 192.168.1.2:5000:localhost:32768

在这里,我可以从任何物理机器发送请求,例如 - curl http://192.168.1.2:5000 会将请求转发到我的 boot2docker 的 IP,容器可以在其中处理请求并发回适当的响应,您应该在发送请求的机器上看到它。

【讨论】:

    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2020-02-17
    • 2017-02-18
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多