簡體   English   中英

Docker:將子域直接定向到特定容器

[英]Docker: Direct subdomains to specific containers

我對Docker並不陌生,因此如果已經回答了我就道歉,但是我看了一下,但並不真正知道如何搜索,所以我想我會問一個問題,如果已經回答了,至少有人知道用docker術語來說這是如何工作的,可以幫助我。

所以這就是我想要做的。

子域xxcom(IP A)

  • 容器A
  • 容器B
  • 容器C -Web服務器

子域yxcom(IP B(或者甚至可能是A,我不知道哪一個是最好的)

  • 容器D(與容器A相同,但用戶不同)
  • 容器E(與容器B相同,但用戶不同)
  • 容器F -webserver(與容器C相同,但用戶不同)

這是我的問題

  1. 對於子域yxcom,我應該使用相同的IP還是不同的IP?
  2. 我如何將這些子域指向特定的容器,以便如果在端口yxcom:8000處有一個容器,則不能僅通過執行yxcom:8001來訪問容器xxcom:8001?
  3. 如何確保兩個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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM