我是码头工作者的新手,因此如果已经回答了道歉,但我看起来并不知道如何搜索它所以我想我会问一个问题,如果它已经回答了,至少有人知道这是如何工作的,可以帮助我。
所以这就是我想要做的。
这是我的问题
我不是百分百肯定我已经理解了使用docker时网络的工作方式,所以任何指针都会非常有用。我应该使用链接吗?我应该使用--net = bridge吗?有没有更简单的方法可以做到这一点?什么是最好的方式?
提前谢谢
答案 0 :(得分:0)
首先,澄清您要配置的内容非常重要。您是否将Apache服务器配置为两个子域的前端?你在容器中运行apache吗?容器A,B,D和E中有什么?他们是否为Web服务器(例如数据库)提供支持服务?
除了这些说明之外,您需要了解的有关Docker网络的最重要的事情是,默认情况下,容器会接收属于“虚拟网络”的IP。仅存在于运行它们的主机中。因此,他们无法从外部世界访问#34; (即使他们可以通过将主机用作网关来访问外部世界)。
在这种情况下,从外部世界访问容器的最直接方式是#34;是使用端口映射,在其中将端口从物理主机映射到容器端口。
例如,假设您的主机具有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/