在运行时转发外部服务设置的容器端口

我有一个服务在host1上的一个容器中运行。 当启动服务时,它会呼叫host2上的一个“主”服务,告诉它绑定到一个任意分配的端口上。

Host2(或群集中的其他主机)通过host1上绑定到容器专用地址的端口不可见。 使用docker run -p只转发图像运行时已知的端口。

如何将传入主机连接转发到此容器端口?

你可以在你的主机上运行一个代理,在它接收到来自主服务的端口之后,可以被容器通知,然后它将设置必要的端口转发。

像vulcand ,这是一个etcd支持代理,可能适合该法案。

利用主机networking设置,而不是通过网桥使用NAT,解决了这个问题。

docker run --net="host" ...