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

时间:2015-05-08 06:12:11

标签: networking dns docker hostname

我尝试使用基于主机名的连接到docker容器。即:我将浏览器连接到web01.docker.example.org(假设* .docker.example.org上的通配符DNS记录指向我的docker框)。例如,如何启用docker将此请求转发给我的nginx docker?

这个想法的灵感来自于apache的VirtualNameHost模型,除了VirtualHost而不是正在运行的容器之外,它还是这样做的。

1 个答案:

答案 0 :(得分:1)

Docker本身不能这样做,但是有一个非常优秀的project by Jason Wilder使用他自己的本地docker-gen实用程序(也可以在他的Github帐户上获得)来解决这个问题。您可以使用docker pull jwilder/nginx-proxy提取受信任的构建并运行它。然后,您可以通过以下方式轻松启动另一个容器(您想要在web01.docker.example.org主机名上监听的容器):

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

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