问题描述
我正在寻找一种通过域名访问在我们公司局域网中的服务器上运行的容器的方法。到目前为止,我只设法通过IP访问它们
设置就这样。 Docker(用于Windows)在服务器srv1.ourdomain.com
(Windows Server 2019)上运行,容器的网络配置有l2bridge
驱动程序,在运行命令中指定的容器的dns名称为cont1
。可以通过docker主机上的dns名称(srv1
)和我机器上的IP进行访问。
如何从位于同一局域网中的本地计算机以DNS名称cont1.ourdomain.com
访问容器?
我尝试使用代理(traefik),但无法重写内容中的url,因此在容器内运行的Web应用程序失败。因此,我无法在该代理后面托管多个Web应用程序。
我知道可以将容器的端口映射到主机端口,然后可以通过主机名和主机端口从lan访问它,但是我正在运行的应用程序需要映射许多端口(例如8个端口)每个容器),并且这些容器是开发人员的短暂生存环境,因此在运行新容器时很难找到端口池。
再说一次,如果我可以通过IP访问容器及其端口,是否可以通过DNS名称进行操作?
UPD1。容器主机是在vmware上运行的虚拟服务器。我尝试关注那些recommendations和configure promiscuous mode。这对DNS毫无帮助。
UPD2。我也尝试过transparent
网络。出于某种原因,DHCP永远无法分配适当的IP,并且容器最终会使用来自168.x.x.x子网的自动配置的ip。
解决方法
您可以创建一个transparent网络,并使容器像主机一样在网络上可发现。但是,使用主机端口是recommended。
您是否尝试过Traefik的PathStrip
或PathPrefixStrip
?那应该让您重写后端的URL。