當我閱讀關於Nginx和Docker的一些文章時。我知道Nginx是一個Web服務器,它的工作是獲取來自客戶端的請求並向特定的應用程序內部機器發送請求。 Docker是一個容器,它可以包含我的應用程序。它可以包含很多東西,比如db,web應用程序。它可以像Unix機器一樣安裝一些軟件包。
我的問題是配置Nginx用於Docker應用程序。我們將安裝Nginx內部Docker或內部我們的機器(ubuntu或Centos ...)?
Nginx是內部還是外部Docker
1
A
回答
0
它可以在兩者上。在可擴展性方面,我會選擇一個自己的docker容器。這樣,您可以不同地增長您的前端和web服務器(或反向代理),並獲得dockerized版本的好處(放入另一個實例和/或服務器,轉到雲等)。
1
NGINX將存在在碼頭集裝箱內。您將在容器中打開端口80,以允許主機向Docker容器內的NGINX發出HTTP請求。
您可能希望在dockerfile中使用官方的NGINX docker容器。
https://hub.docker.com/_/nginx/
你dockerfile將有...
FROM NGINX(頂部)
EXPOSE 80(HTTP)
EXPOSE 443(HTTPS)
然後當您運行碼頭集裝箱時,使用-P(大寫字母P)標誌使兩個暴露的端口可用於主機。
3
您需要在自己的容器中運行Nginx,在該容器中將端口發佈到主機,因此當請求進入主機端口80時,Docker會將其指向Nginx容器進行處理。
應用程序的所有其他部分(Web前端,API,數據庫,緩存等)都在它們自己的容器中運行,Nginx是需要外部提供的任何代理。
主要優點這種方法:
- 你建立你的所有的Nginx配置成碼頭工人的形象,所以你可以運行任何地方,你不需要複製周圍conf文件;
- 您對主機的依賴性最小 - 當您添加新機器或將其替換時,您只需要安裝Docker,然後運行所有容器;
- 您的應用程序容器不需要公開可見 - 如果您在主機上運行Nginx,那麼爲了代理您的應用程序,他們需要將其端口發佈到主機。通過在Docker網絡中運行容器中的所有內容,應用程序不需要發佈其端口,例如應用程序容器中的端口5000可用於Nginx容器,但不在主機上。
相關問題
- 1. 這是左連接還是右連接,內部還是外部?
- 2. document.getElementByID是外部還是內聯?
- 3. Docker - 我的MySQL數據庫應該在容器的內部還是外部?
- 4. 檢查一個鏈接是內部的還是外部的
- 5. 尋找類方法是外部還是內部調用
- 6. 如何確定Delaunay三角形是內部還是外部?
- 7. 使用jQuery檢查鏈接是內部的還是外部的
- 8. C++中是靜態變量的內部還是外部
- 9. ASP.Net檢查用戶是內部的還是外部的
- 10. 外部JavaScript - 身體還是頭部?
- 11. SVG <script>元素:內部還是外部?
- 12. API設計:分離內部還是外部功能?
- 13. 函數應該在jQuery的擴展內部還是外部?
- 14. 檢查點擊模式窗口內部還是外部
- 15. C++靜態函數:放在課堂的內部還是外部?
- 16. php驗證 - 在函數內部還是外部?
- 17. Java 8 stream get()on可選 - 在方法內部還是外部?
- 18. 我應該在Ruby中刪除內部還是外部括號?
- 19. 我應該在課堂內部還是外部散列密碼?
- 20. AS3預加載器內部還是外部?
- 21. 「I/O設備請求」是外部中斷還是內部異常?
- 22. 如何找出兩個矢量之間的角度是外部還是內部?
- 23. 如何確定cv :: Mat是使用內部還是外部數據?
- 24. 如何測試一個點是在三角形的內部還是外部?
- 25. Coldfusion - 確定網站是通過內部網還是外部網訪問
- 26. 確定是使用內部還是外部的Android應用程序
- 27. 類的靜態數據成員是內部鏈接還是外部?
- 28. 有沒有辦法確定Android存儲設備是內部還是外部?
- 29. Flash繪圖API中的邊框線是在內部還是外部繪製的?
- 30. docker nginx部署入口點
端口80是內部的Docker。但用戶請求發送到我們的機器(CentOS,ubuntu ...)。我們的機器如何在沒有NginX的情況下將請求路由到Docker? –
你需要像NGINX一樣的網絡服務器 - docker只包含webserver ...你可以在運行容器時通過-p 1245:80映射端口,然後訪問主機上的端口1245以在容器內點擊NGINX – danday74