将Docker容器作为子域代理

时间:2016-03-23 17:00:50

标签: proxy docker

我希望将docker容器代理为docker主机的子域,如下所示。我已经看到了几种可以完成类似工作的解决方案,但没有一种能够满足我们的需求。

主机:运行RHEL 7.2的企业VPS

  • 主机域名:host.net(fakename - 但它位于企业内部网后面,无法从公众访问)

  • DNS服务器:host.net的DNS被委托给主机,所以我需要运行一个dns服务器:53(这是新的,这就是为什么一个人还没有设置)< / p>

  • 主机IP:172.16.10.12

Docker:v1.10

  • 子网:dockernet 192.168.222.1/24

  • 子网dns(已创建docker):dnsmasq on 192.168.122.1:53

目标:

    主机上的
  • 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,subnets等的新手。非常感谢任何帮助!

埃里克

1 个答案:

答案 0 :(得分:1)

我使用nginx-proxy为每个容器实现了这样的动态子域。

This article还解释了如何从nginx基础图像和dockergen实现相同的功能,以便从docker事件中生成nginx conf。