如果docker容器共享主机端口,如何将它们暴露在互联网上?

问题描述 投票:0回答:1

我正在使用docker for windows。有2个容器在下面列出的端口上运行Windows IIS,我的主机IP是192.168.25.110。

Container 1: 0.0.0.0:50095->80/tcp
Container 2: 0.0.0.0:50093->80/tcp

我的主机IP是192.168.25.110。

如上图所示,两个容器都映射到80端口。那么,当外部用户浏览到192.168.25.110:80时,这2个容器中的哪个会被访问呢?是否有一个确定的行为?

docker docker-container docker-networking
1个回答
1
投票

正如David在评论中提到的,您的端口映射是落后的。 例如,根据您所提供的信息,您应该导航到的是 http:/192.168.25.110:50095 以达到容器1。

这可能不是您想要的,因为您可能想要使用默认的HTTP端口(80)。

您应该研究一下针对您的情况的反向代理解决方案。 反向代理会监听80端口的所有流量,然后决定(根据配置)将请求发送到哪个容器。

Traefik是一个流行的解决方案。 Traefik在80端口监听,然后你可以配置它根据规则将流量路由到不同的容器。

你可以做这样的事情。

  • http://192.168.25.110/container1 => Container1
  • http://192.168.25.110/container2 => Container2

  • http://container1.docker.local => Container1
  • http://container2.docker.local => Container2

请看一下Traefik的快速入门指南。https:/docs.traefik.iogetting-startedquick-start。

© www.soinside.com 2019 - 2024. All rights reserved.