【发布时间】:2020-09-02 13:28:13
【问题描述】:
我正在寻找一种通过域名访问在我们公司局域网中的服务器上运行的容器的方法。到目前为止,我只能通过 IP 访问它们
所以设置是。 Docker(适用于 Windows)在服务器 srv1.ourdomain.com(Windows Server 2019)上运行,容器网络配置有 l2bridge 驱动程序,容器的 dns 名称(在运行命令中指定)为 cont1。它可以通过 docker 主机 (srv1) 上的 dns 名称和我机器上的 IP 访问。
如何从位于同一局域网的本地计算机通过 dns 名称 cont1.ourdomain.com 访问容器?
我尝试使用代理 (traefik),但它无法重写内容中的 url,因此在容器内运行的 Web 应用程序失败。因此,我无法在该代理后面托管多个 Web 应用程序。
我知道可以将容器的端口映射到主机端口,然后可以通过主机名和主机端口从局域网访问它,但是我正在运行的应用程序需要映射许多端口(例如 8 个端口每个容器)并且这些容器是短暂的开发人员环境,在运行新容器时要找到一个端口池将是一个地狱。
如果我可以通过 IP 访问容器及其端口,有没有办法通过 DNS 名称来做同样的事情?
UPD1。容器主机是运行在 vmware 上的虚拟服务器。我试图关注那些recommendations 和configure promiscuous mode。 Thise 对 dns 没有帮助。
UPD2。我也试过transparent 网络。由于某种原因,DHCP 永远无法分配正确的 IP,并且容器最终会使用来自 168.x.x.x 子网的自动配置 IP。
【问题讨论】:
-
您需要容器的特定端口吗?您可以在企业服务器上添加 nginx,并将 proxypass 流量添加到容器中的公开端口