Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于子域将流量路由到docker容器_Docker_Wildcard Subdomain - Fatal编程技术网

基于子域将流量路由到docker容器

基于子域将流量路由到docker容器,docker,wildcard-subdomain,Docker,Wildcard Subdomain,我将通配符dns指向我的服务器,例如.*.domain.com 我想将每个子域路由到它自己的docker容器。 因此,box1.domain.com将转到相应的docker容器。 这应该适用于任何流量,主要是HTTP和SSH 或者,端口可以是子域的一部分,例如80.box1.domain.com。 我将有很多docker容器,因此解决方案应该是动态的,而不是针对每个容器进行硬编码。最简单的解决方案是使用Apache mod_rewrite-RewriteMap方法。当用于文本文件时,它的性能非常

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

我想将每个子域路由到它自己的docker容器。 因此,box1.domain.com将转到相应的docker容器。 这应该适用于任何流量,主要是HTTP和SSH

或者,端口可以是子域的一部分,例如80.box1.domain.com。
我将有很多docker容器,因此解决方案应该是动态的,而不是针对每个容器进行硬编码。

最简单的解决方案是使用Apache mod_rewrite-RewriteMap方法。当用于文本文件时,它的性能非常好,但如果需要,它可以调用脚本。有一种方法很好地涵盖了脚本变体

如果你想避开Apache,dotCloud的好心人创建了HipCache来为他们的PaaS服务进行路由。他们甚至在构建自己的解决方案之前进行了尝试。我找到了一个使用HipCache的tsuru.io引用,该引用正好用于路由到docker容器,因此这肯定验证了它的有效性。
我决定为每个SSH连接使用一个随机端口,因为我无法单独使用子域使其工作。

另一个解决方案是使用

此工具会自动将请求转发到相应的容器(基于子域,通过VIRTUAL\u HOSTcontainer环境变量)

例如,如果要将box1.domain.com重定向到容器,只需将VIRTUAL_HOST容器环境变量设置为“box1.domain.com


下面是我写的一个详细的教程:。

我的答案可能会很晚才给出,但是当您使用docker时,您并不需要ssh来连接到您的容器。使用
docker exec
命令,您可以在正在运行的容器中直接运行shell命令


我的建议是使用开头列出的容器来配置子域。并在主机上运行,以便对容器、图像、日志甚至其中的执行命令有一个直观的概览—所有这些都是通过portainer gui实现的

这里有一个指向我提到的tsuru.io的链接:。此外,这里有一些关于使用nginx和dnsmasq进行动态反向代理的信息,尽管我觉得有点尴尬:还可以看看下面的StackOverflow问题:这些解决方案是否支持容器的SSH通信?很高兴知道,这与联锁的工作方式类似。它促进了SSH吗?是的,它似乎促进了SSH。我不知道它以何种方式促进SSH,因为Nginx代理确实处理HTTP请求。如果您想使用子域将SSH连接到Docker容器中,我认为您可以添加指向主机IP的CNAME DNS规则。将SSH容器的端口公开给主机(因此公开给公众),比如说1020,将允许您使用您的子域SSH-p1020 sub.domain.com将SSH连接到容器中。