将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。