Proxy 代理Docker容器作为子域

Proxy 代理Docker容器作为子域,proxy,docker,Proxy,Docker,我希望代理docker容器作为docker主机的子域,如下所示。我见过几个解决方案可以实现类似的功能,但没有一个真正符合我们的需要 主机:运行RHEL 7.2的公司VPS 主机域:Host.net(fakename-但它位于公司内部网后面,无法从公共网络访问) DNS服务器:host.net的DNS已委托给主机,因此我需要在:53上运行DNS服务器(这是新的,这就是为什么尚未设置DNS服务器的原因) 主机IP:172.16.10.12 Docker:v1.10 子网:dockernet 1

我希望代理docker容器作为docker主机的子域,如下所示。我见过几个解决方案可以实现类似的功能,但没有一个真正符合我们的需要

主机:运行RHEL 7.2的公司VPS

  • 主机域:Host.net(fakename-但它位于公司内部网后面,无法从公共网络访问)

  • DNS服务器:host.net的DNS已委托给主机,因此我需要在:53上运行DNS服务器(这是新的,这就是为什么尚未设置DNS服务器的原因)

  • 主机IP:172.16.10.12

Docker:v1.10

  • 子网:dockernet 192.168.222.1/24

  • 子网dns(docker创建):192.168.122.1:53上的dnsmasq

目标:

  • 主机上的dnsmasq从172.16.10.12开始为host.net提供服务
  • 将所有子域(*.host.net)代理到子网dockernet,以便containername.host.net、containerhostname.host.net、alias1.host.net等可以访问加入dockernet的任何容器
  • 对于任何连接到dockernet的容器,是否自动执行此操作
  • 将容器视为主机,这样我们就不必通过docker:ex:rediscontainer.host.net:6379手动打开端口
问题/议题:

  • 无法在主机上启动dnsmasq,因为docker已经绑定了192.168.122.1:53-我相信我可以将dnsmasq配置为不在特定IP上侦听,但我是新手
  • 配置这个的相对简单的方法是什么?我希望我可以配置dnsmasq和iptables来实现这一点,但我不知道该怎么做,或者这两个是否可以实现我的目标
  • 我假设docker为用户定义的网络内置dns是自动化容器名称解析的最简单方法,但是有更简单的方法吗? 我为任何歧义道歉,因为我是dns、子网等的新手。非常感谢您的帮助

Eric

我使用每个容器实现了这样的动态子域

还解释了如何从nginx基本映像和dockergen实现相同的功能,以从docker事件生成nginx conf