0

我有一些 docker 容器通过 docker bridge 网络一起交谈。它们不能从外部访问(我说过),因为它们是从带有默认命令的脚本启动的,该命令不包括“expose”或“-p”选项。我无法更改该脚本。

我想连接到其中一个运行服务器并侦听端口 8080 上的请求的容器。我尝试将该网桥连接到新创建的 docker 网桥网络,但我没有成功。现在我正在考虑创建一个新容器并让它与服务器对话(通过桥接网络)。由于它是一个新容器,我可以使用“expose”或“-p”选项,因此它可以与主机通信。

这是个好主意吗?如何将对该容器的每个请求转发到服务器,然后将响应返回给主机?

谢谢

4

2 回答 2

2

在默认的 docker 网络中,所有端口都是公开的。因此,您只需要一个向主机公开端口并且与您已经创建的其他容器位于同一网络中的容器。

这是一个比较正常的模式。您可以使用像 nginx 这样的反向代理来实现这样的事情。

有一些容器可以自动化这个过程:

https://github.com/jwilder/nginx-proxy

但是,如果您无法控制其他容器,则需要手动编写代理配置。

于 2018-07-22T20:42:08.170 回答
0

如果你尝试连接的容器是一个 http 服务器,你可以使用一个现成的容器镜像,它可以作为一个 http 转发器(例如,nginx - 将它配置为一个 http 转发器相对容易)。

如果您需要普通的 tcp 转发,您可以创建一个运行“socat”的容器(socat 可以用作 tcp 转发器)。

注意:在任何一种情况下,您都将暴露一个不应该在公共地址上的侦听器。采取措施不允许未经授权的连接。

于 2018-07-22T20:41:35.390 回答