gpt4 book ai didi

apache - Docker:将子域直接定向到特定容器

转载 作者:行者123 更新时间:2023-12-02 20:23:52 25 4
gpt4 key购买 nike

我对Docker并不陌生,因此如果已经回答了我就道歉,但是我看了一下,却并不真正知道如何搜索,所以我想我会问一个问题,如果已经回答了,至少有人知道用docker术语来说这是如何工作的,可以帮助我。

所以这就是我想要做的。

子域x.x.com(IP A)

  • 容器
  • 容器B
  • 容器C -Web服务器

  • 子域y.x.com(IP B(或者甚至可能是A,我不知道最好是什么))
  • 容器D(与容器A相同,但用户不同)
  • 容器E(与容器B相同,但用户不同)
  • 容器F -webserver(与容器C相同,但用户不同)

  • 这是我的问题
  • 对于子域y.x.com,我应该使用相同的IP还是使用不同的IP?
  • 如何将这些子域指向特定的容器,以便如果您在端口y.x.com:8000上有一个容器,则仅通过执行y.x.com:8001就无法访问容器x.x.com:8001?
  • 如何确保可以通过不同的子域访问两个Web服务器(假设它们都在端口80上运行?)

  • 我不是100%肯定我了解使用docker时网络的工作方式,因此任何指针都将真正有用。我应该使用链接吗?我应该使用--net = bridge吗?有没有更简单的方法可以做到这一点?最好的方法是什么?

    先感谢您

    最佳答案

    首先,弄清您要配置的内容很重要。您是否将Apache服务器配置为两个子域的前端?您在容器中运行Apache吗?您在容器A,B,D和E中都有什么?他们是否向Web服务器(例如数据库)提供支持服务?

    与这些说明无关,关于Docker网络,您需要了解的最重要的事情是,默认情况下,容器接收的IP属于“虚拟网络”,该IP仅存在于运行它们的主机中。因此,无法从“外部世界”访问它们(即使他们可以通过使用主机作为网关来访问外部世界)。

    在这种情况下,从“外部世界”访问容器的最直接方法是使用端口映射,其中您将端口从物理主机映射到容器端口。

    例如,假设您的主机具有IP 10.0.0.1,并且您的容器在80端口上运行Web服务器。为了访问此容器,您需要做的第一件事是启动容器并将其端口80映射到物理主机中的某个端口。看起来像:
    docker run -d -p 8000:80 <image> <command>
    其中-p是用于映射端口的相关选项(在这种情况下,您正在将物理主机中的端口8000映射到容器中的端口80)。因此,要访问容器Web服务器,您将需要使用具有映射端口(10.0.0.1:8000)的主机IP-请求将被重定向到容器的80端口。

    因此,假设您在同一主机上运行所有容器,则可以将每个子域映射到相同的IP,但是端口不同,并将每个端口映射到容器C和F的端口80。

    综上所述,最近的Docker版本已经添加了许多新的网络配置方式,但是我认为在移入更复杂的场景之前了解基本行为确实非常重要。

    在这里查看基本配置说明:

    https://docs.docker.com/engine/userguide/containers/networkingcontainers/

    关于apache - Docker:将子域直接定向到特定容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35321702/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com