Virtualization
我應該將應用程序拆分為多個連結的 Docker 容器還是將它們合併為一個?
背景
我目前正在建構一個我想部署到 Docker 容器的應用程序。
容器將在我的伺服器上執行。我希望能夠在同一台伺服器上執行其他應用程序,而不會增加執行的 Docker 映像的數量。
截至目前,不同的零件/容器是:
- Nginx(反向代理,靜態資源)
- 節點(應用程序前端)
- 節點(應用後端/API)
- 蒙戈(數據庫)
想法
我的總體想法是每個不同的部分都應該作為一個容器執行。我擔心的是,如果我要在同一台機器上執行另一個應用程序,我最終會用大量無法處理的連結圖像來膨脹它。
這可以通過為每個應用程序製作一個圖像來解決。這樣上述服務將成為一個圖像的一部分。這是否首先與 Docker 的整體安全性或目的相衝突?
澄清
在一個 Docker 鏡像中包含多個服務是否與 Docker 的目的相衝突?
從一個鏡像執行服務時,容器的整體安全優勢是否會被取消?
Docker 自己清楚地說明了這一點:您應該為每個容器執行一個程序。
但是,他們處理連結容器的工具還有很多不足之處。他們確實提供了 docker-compose(以前稱為 fig),但我的開發人員報告說它很挑剔,偶爾會失去鍊接容器的跟踪。它也不能很好地擴展,實際上只適用於非常小的項目。
現在我認為最好的解決方案是Kubernetes,一個Google項目。Kubernetes 也是最新版本的Openshift Origin、PaaS 平台以及 Google Container Engine 的基礎,現在可能還有其他東西。如果您使用 Kubernetes,您將能夠輕鬆地部署到此類平台。