我刚刚开始使用 Docker,如果我能完成它,我就会将我的所有服务切换到它。
我最初不喜欢 Docker,因为我认为访问容器的唯一方法是将端口转发到 Docker 主机。后来我发现了 Docker 网络和网络ipvlan
。将子网络路由到我现有的网络基础设施的能力非常理想,所有设备都可以通过简单的静态路由访问容器。
还剩下一个问题。DNS。目前我有一台 Windows 服务器,它托管 AD、内部 DNS 和 DHCP 服务器。DHCP 服务器动态更新 DNS 记录。这与我当前的虚拟机设置配合得很好,但 Docker 主机会自动为容器分配 IP 地址。容器可以通过容器名称相互解析。
因为我很懒,不想手动添加 DNS 条目,所以我想添加一个 DNS 服务器容器,用于解析 Docker 主机。为了便于解释,我绘制了一张设置图:
我的设置的手绘图:
假设a.home
是我的基础设施的内部域名。网络上的所有设备在地址上都有一个主 DNS 服务器10.0.0.2
。docker.a.home
指向 docker 主机。
在 docker 主机内部有一个10.0.1.0/24
网络,所有 docker 容器都连接到该网络。容器按预期相互解析。我想在 docker 主机上配置一个 DNS 服务器容器,它将container-name.docker.a.home
域解析为正确的 IP 地址。
例子:
c1.docker.a.home
将决定10.0.1.2
c2.docker.a.home
将决定10.0.1.3
主 DNS 服务器将具有NS
指向 Docker DNS 服务器容器的记录。
我的设置可能过于复杂,如果您有其他更有效的方法来实现相同的结果,我愿意听取您的建议。如果我的设置对您有意义,我将非常感激您的帮助或示例 docker compose 文件来帮助我入门。
提前非常感谢您。