2014-11-14 106 views
3

我想知道在你的docker鏡像裏面有沒有nginx的優點和缺點。有很多關於如何在docker上安裝nginx的教程,但我問的是,你應該還是不應該?你應該在docker中安裝nginx嗎?

是否應該在docker主機上安裝nginx,並將它指向單個正在運行的容器(可以運行彩虹等)?或

你應該在容器中安裝另一個nginx層嗎?

我沒有看到Docker容器中有另一個nginx的好處,但是我想知道爲什麼會有這麼多的教程,就好像這是常識一樣,而且我沒有得到常識,這會讓人失望我。

編輯:

每個容器的配置越少,它對我來說越好。如果nginx容器和它後面的應用程序容器之間存在緊密的耦合,那麼它肯定不是我正在尋找的解決方案,並且打破了將容器放在首位的目的。這就是爲什麼我傾向於在Docker主機上安裝nginx。

如果我們要有一個nginx容器,容器應該獨立於應用程序。除非可以在執行docker run時自定義應用程序特定的配置,例如端口號和IP地址,工作進程數,client_max_body_size,否則不應將其配置到容器中。

+0

你想把nginx放到哪個容器中(請參閱下面的@PeterLyons概述的選項),但你當然想把它放到某個容器中,而不是直接放在主機上。這樣,你就可以獲得整個nginx配置(包括所有端口號和路徑等)的一個很好的包。 – Thilo

+0

建議您說明您的價值(靈活性?更少的移動部件?),然後人們有機會就折衷提出建議。就目前而言,你要求的是純粹的意見,這是無關緊要的。 – Bryan

+0

@Bryan:完成。我已添加更多我正在尋找的信息。 – garbagecollector

回答

2

這可能會因爲基於觀點而關閉,但是對於我認爲值得注意的是docker應該參與到傳輸層(TCP/UDP)而不是更高(HTTP)的網絡。因此,我會說不,你不應該直接在你的碼頭主機上直接安裝nginx作爲反向代理,如果你想要nginx提供的功能,你應該在你的容器中安裝nginx。

你可以決定你想在你的每個應用程序前面有一個nginx容器(這看起來與集裝箱化和分離的總體思想最爲一致,而不是共享)或者一個nginx容器來代理託管的幾個應用程序容器放在同一臺主機上(總體上更簡單,但耦合更緊密,可能與碼頭的理念不太一致)。您也可以採用phusion風格,並將您的應用程序和它的nginx放在同一個容器中,這提供了一個很好的連貫單元,但是否則會違背每個容器一個進程樹的常見情況。

+0

如果你有一個nginx容器,你需要設置nginx容器和應用容器之間的鏈接,以便它們可以相互交談。因此,您需要首先使用預定義的名稱啓動應用容器,然後啓動已預先配置爲這些名稱的nginx容器。是的,你是對的,它是更緊密耦合的,這種配置的好處是Docker主機不再需要安裝任何Web服務器。 – garbagecollector