根据子域将stream量路由到docker集装箱

我有通配符DNS指向我的服务器,例如* .domain.com

我想将每个子域路由到它自己的docker集装箱。 所以,box1.domain.com去适当的docker集装箱。 这应该适用于任何stream量,主要是HTTP和SSH。

或者,也许该端口可以是子域的一部分,例如80.box1.domain.com。 我将有大量的docker集装箱,所以解决scheme应该是dynamic的,而不是每个集装箱的硬编码。

我使用互锁来使用nginx插件来路由httpstream量。 我决定对每个SSH连接使用一个随机端口,因为我无法单独使用子域名来工作。

另一个解决scheme是使用https://github.com/jwilder/nginx-proxy

该工具自动将请求转发到适当的容器(基于通过VIRTUAL_HOST容器环境variables的子域)。

例如,如果要将box1.domain.comredirect到容器,只需将VIRTUAL_HOST容器环境variables设置为“ box1.domain.com ”即可。

这里是我写的一个详细的教程: http : //blog.florianlopes.io/host-multiple-websites-on-single-host-docker 。

我的答案可能会迟到,但是当你使用docker时,你并不需要ssh来连接你的容器。 通过docker exec命令,可以直接在运行的容器中运行shell命令。

这里是我的build议使用开始列出的nginx代理容器configuration子域。 并在你的主机上运行portainer ,以便通过portainer gui对容器,图像,日志甚至执行命令进行全面的视觉概览。

最简单的解决scheme是使用Apache mod_rewrite RewriteMap方法。 对文本文件使用时效果非常好,但如果需要,可以调用脚本。 还有另一个StackOverflow的答案 ,涵盖了很好的脚本变体。

如果你想避开Apache,那么在dotCloud上的好人就创build了Hipache来为他们的PaaS服务进行路由。 他们甚至在build立自己的解决scheme之前logging了他们尝试的不同事物 我发现tsuru.io使用hipache正确的路由到docker集装箱的引用,所以一定要validation它为此目的。