我尝试使用基于主机名的连接到docker容器。即:我将浏览器连接到web01.docker.example.org(假设* .docker.example.org上的通配符DNS记录指向我的docker框)。例如,如何启用docker将此请求转发给我的nginx docker?
这个想法的灵感来自于apache的VirtualNameHost模型,除了VirtualHost而不是正在运行的容器之外,它还是这样做的。
答案 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配置文件等。我已经使用它很长一段时间没有打嗝,并强烈推荐它用于此目的。祝你好运!