【问题标题】:Is it possible deploy multiple container on single host with different sub domain and same listening port(80)?是否可以在具有不同子域和相同监听端口(80)的单个主机上部署多个容器?
【发布时间】:2017-11-03 05:44:32
【问题描述】:

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

但只有一个容器正在工作,另一个容器正在下降。

这是我的 Docker 撰写文件:

版本:'3' 服务: 站点1: 图片:“raj/con:site1” 环境: - 主机名=13.92.51.1XX - VIRTUAL_HOST=site1.serveractions.com 端口: - “80:80”

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

【问题讨论】:

  • 如果你想根据主机名路由流量,你需要在你的服务器前面有一个反向代理(例如 apache、nginx、haproxy...),可以在主机上运行,​​也可以在单独的容器中运行.

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


【解决方案1】:

它按预期工作。一个主机端口(本例中为 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,这将确保您没有任何与代码相关的更改,而是访问容器的方式(或端口)服务会改变。

【讨论】:

  • 谢谢,我还有一个问题是否可以像 IIS 一样在 Docker 中为不同的域映射 DNS 并使用相同的端口(80)?
  • DNS 没有映射到任何端口。在您的场景中,我相信您希望 site1.serveraction.com 转到容器 1,而 site2.serveraction.com 转到容器 2。所以你要做的就是现在从 site1.serveraction.com:72801 访问容器 1 并从 site2.serveraction.com:72802 等访问容器 2。
猜你喜欢
  • 2016-07-23
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 2013-12-26
相关资源
最近更新 更多