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



我正在使用 docker for windows。有 2 个容器在下面列出的端口上运行 Windows IIS:

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 个容器中的哪一个?是否存在确定性行为?

正如大卫在评论中提到的,您在端口映射上是倒退的。 例如,根据您提供的内容,您将导航到 http://192.168.25.110:50095/以访问 Container1。

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

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

Traefik 是一种流行的解决方案。 Traefik 侦听端口 80,然后您可以将其配置为根据规则将流量路由到不同的容器。

您可以执行以下操作:

  • http://192.168.25.110/container1=>容器1
  • http://192.168.25.110/container2=>容器2

  • http://container1.docker.local=>容器1
  • http://container2.docker.local=>容器2

查看 Traefik 的快速入门指南:https://docs.traefik.io/getting-started/quick-start/

相关内容

最新更新