[英]Docker: Direct subdomains to specific containers
我對Docker並不陌生,因此如果已經回答了我就道歉,但是我看了一下,但並不真正知道如何搜索,所以我想我會問一個問題,如果已經回答了,至少有人知道用docker術語來說這是如何工作的,可以幫助我。
所以這就是我想要做的。
這是我的問題
我不是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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.