如何将基于主机名的请求转发到特定的泊坞窗容器

我试图使用主机名连接到docker集装箱。 即:我将浏览器连接到web01.docker.example.org(假设* .docker.example.org上的通配符DNSlogging指向我的泊坞窗)。 如何让docker将这个请求转发给我的nginx docker?

这个想法是由apache的VirtualNameHost模型启发的,除了VirtualHost而不是一个正在运行的容器。

Docker本身不能做到这一点,但是Jason Wilder有一个非常优秀的项目,他使用自己开发的docker-gen工具(也可以在他的Github账户上)解决这个问题。 您可以使用docker pull jwilder/nginx-proxy可信版本并运行它。 然后,可以使用以下命令轻松启动另一个容器(您想要在web01.docker.example.org主机名上监听的web01.docker.example.org ):

docker run -it -h "web01.docker.example.org" myContainer

nginx-proxy容器自动检测容器上公开的端口,并将容器绑定到该端口上的nginx后端。 这也是你如何获得多个容器监听单个IP地址,但是根据主机名路由到多个容器。 该项目还支持SSL和自定义vhost.dconfiguration文件等。 我已经使用了很长一段时间没有打嗝,并强烈build议这个目的。 祝你好运!