我希望将 docker 容器代理为 docker 主机的子域,如下所示。我见过几种可以完成类似任务的解决方案,但没有一个真正适合我们的需要。
主机:运行 RHEL 7.2 的企业 VPS
主机域:host.net(假名 - 但它位于公司 Intranet 后面,无法从公共(public)访问) DNS 服务器:host.net 的 DNS 被委托(delegate)给主机,所以我需要在 :53 上运行一个 dns 服务器(这是新的,这就是为什么还没有设置)主机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,这样任何加入 dockernet 的容器都可以通过 containername.host.net、containerhostname.host.net、alias1.host.net 等访问。任何连接到 dockernet 的容器都会自动发生这种情况
将容器视为主机,因此我们不必通过 docker 手动打开端口:例如:rediscontainer.host.net:6379 问题/问题:无法在主机上启动 dnsmasq,因为 docker 已经绑定(bind)了 192.168.122.1:53 - 我相信我可以将 dnsmasq 配置为不在特定 IP 上监听,但我是新手 什么是相对简单的配置方法?我希望我可以配置 dnsmasq 和 iptables 来做到这一点,但我不确定如何去做,或者这两个是否可以实现我的目标。 我假设 docker 为用户定义的网络内置的 dns 是自动化容器名称解析的最简单方法,但有没有更简单的方法?
由于我是 dns、子网等的新手,我对任何歧义表示歉意。非常感谢任何帮助! 埃里克