将Docker容器作为子域代理

我正在寻找代理泊坞窗容器作为docker主机的子域,如下所示。 我已经看到几个解决scheme可以完成类似的事情,但没有一个真正适合我们的需要。

主机:运行RHEL 7.2的企业VPS

  • 主机域名:host.net(fakename – 但它在企业内部网之后,不能从公众到达)

  • DNS服务器:DNS的host.net委托给主机,所以我需要运行一个DNS服务器:53(这是新的,这就是为什么一个尚未设置)

  • 主机IP:172.16.10.12

Docker:v1.10

  • 子网:dockernet 192.168.222.1/24

  • 子网DNS(docker created):dnsmasq on 192.168.122.1:53

目标:

  • 主机上的dnsmasq从172.16.10.12起服务于host.net
  • 将所有子域(* .host.net)代理到子网dockernet,以便任何容器连接到dockernet都可以通过containername.host.net,containerhostname.host.net,alias1.host.net等访问
  • 对于连接到dockernet的任何容器自动发生这种情况
  • 将容器视为主机,以便我们不必通过docker手动打开端口:例如:rediscontainer.host.net:6379

问题/问题:

  • 不能启动主机上的dnsmasq,因为docker已经绑定192.168.122.1:53 – 我相信我可以configurationdnsmasq不听一个特定的IP,但我是新来的这个
  • 什么是相对简单的方法来configuration这个? 我希望我可以configurationdnsmasq和iptables来做到这一点,但我不知道如何去做,或者如果这两个可以实现我的目标。
  • 我认为docker的内置DNS为用户定义的networking是自动化容器名称parsing的最简单的方法,但是有没有更简单的方法? 我对任何含糊不清的道歉,因为我是新的DNS,子网等任何帮助,非常感谢!

埃里克

我使用nginx-proxy在每个容器上实现了这样的dynamic子域。

本文还解释了如何从nginx基本图像和dockergen中实现相同的function,以从docker事件生成nginx conf。