4

我一直在关注这些教程并用 Docker 进行了几天的试验,但我找不到任何“真实世界”的使用示例。

如何从外部与我的容器通信?

我能找到的所有示例都以 1 个或多个容器结束,它们可以与其他容器共享端口,但主机之外的任何人都无法访问其暴露的端口。

拥有这样的容器的全部意义不是至少需要从外部访问其中的一个吗?

我找到了一个名为 pipework ( https://github.com/jpetazzo/pipework ) 的工具,它可能会帮助我解决这个问题。但这是每个人测试 Docker 进行生产的工具吗?

让外部与我的容器交谈是否需要“黑客”?

4

2 回答 2

5

您可以使用该参数-p将容器的端口公开给主机。

例如:

  sudo docker run -p80:8080 ubuntu bash

将容器的 8080 端口绑定到主机的 80 端口。

因此,您可以使用主机的 URL 从外部访问您的容器:

  http://you.domain -> losthost:80 -> container:8080

那是你想做的吗?或者我错过了什么

(该参数-expose仅将端口暴露给其他容器(不是主机))

于 2014-02-03T09:20:29.473 回答
3

此(https://blog.codecentric.de/en/2014/01/docker-networking-made-simple-3-ways-connect-lxc-containers/)博客文章解释了问题和解决方案。

基本上,它看起来像 pipeworks ( https://github.com/jpetazzo/pipework ) 是目前将容器端口暴露给外部的方式......希望这能很快集成......

更新:在这种情况下,iptables 是罪魁祸首,并且有一条规则阻止转发流量。添加-A FORWARD -i em1 -o docker0 -j ACCEPT解决了它..

于 2014-02-03T10:26:30.023 回答