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

时间:2017-11-03 05:44:32

标签: docker dns docker-compose azure-container-service

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

但只有一个容器正在运行另一个容器。

这里我的Docker撰写文件:

版本:'3' 服务:  SITE1:   图片:“raj / con:site1”   环境:     - HOST_NAME = 13.92.51.1XX     - VIRTUAL_HOST = site1.serveractions.com   端口:     - “80:80”

版本:'3' 服务:  站点2:   图片:“raj / con:site2”   环境:     - HOST_NAME = 13.92.51.1XX     - VIRTUAL_HOST = site2.serveractions.com   端口:     - “80:80”

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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