是否可以在具有不同子域和相同侦听端口(80)的单个主机上部署多个容器?

我已经在单个Windows Server 2016上部署了20个ASP.Net容器。在这里我有点容器与不同的端口在相同的IP工作正常。 我需要在端口80上公开容器中的所有站点来分隔子域(例如:site1.serveraction.com,site2.serveraction.com)

但是另外一个工作的容器正在下降。

在这里,我的Docker撰写文件:

版本:“3”服务:site1:image:“raj / con:site1”环境: – HOST_NAME = 13.92.51.1XX – VIRTUAL_HOST = site1.serveractions.com端口: – “80:80”

版本:“3”服务:site2:image:“raj / con:site2”环境: – HOST_NAME = 13.92.51.1XX – VIRTUAL_HOST = site2.serveractions.com端口: – “80:80”

它按预期工作。 一个主机端口(在这种情况下是80)只能由一个容器使用,因为只有一个端口80.在你的情况下,解决scheme是将主机的不同端口映射到容器中的端口80

对于容器1 – >使用端口说72801到端口80,即-p 72801:80

对于容器2 – >使用端口说72802到端口80,即-p 72802:80

对于容器20 – >使用端口72820到端口80,即-p 72820:80

现在任何访问容器1的服务都必须(地址):72801,这将被转发到容器1的端口80,这将确保你没有任何代码相关的变化,但访问容器服务的方式(或端口)将改变。