我在想爲什麼要用這個配置Memcached的虛擬機呢?
安全:如果有人打破了Memcached和木馬文件系統,它並不重要 - 文件系統被當你開始一個新的memchached扔掉。
隔離:您可以硬限制每個容器,以防止它使用太多的RAM。
標準化:當前,每個應用程序/數據庫/緩存/負載均衡器必須記錄要安裝的內容,要配置的內容以及要運行的內容。沒有標準(也不缺乏木偶,廚師等工具)。但是這些工具非常複雜,並非真正獨立於操作系統(儘管他們聲稱),並且從開發到部署都具有相同的複雜性。
隨着碼頭,一切都只是一個容器開始run BLAH
。如果您的應用程序有5個圖層,則只需要5個容器即可運行,並且頂部只有一點編排。除非開發人員在該層開發,否則開發人員無需「查看容器」。
資源:您可以在普通PC上啓動數千個Docker容器,但是在啓動數百個虛擬機時會遇到麻煩。限制是CPU和RAM。 Docker容器只是「增強」chroot中的進程。在虛擬機上,有幾十個後臺進程(cron,logrotation,syslog等),但是docker有額外的進程。
我猜,這將毫無意義具有相同的主機
這取決於下一個以上的memcached泊塢窗容器中運行。在某些情況下,您想將RAM分割成宗地而不是全球分割。 (例如,想象一下,如果您想將20%的緩存用於緩存用戶,並將40%的緩存用於緩存文件等)。
此外,大多數分片方案難以擴展,因此人們通常以很多'虛擬'碎片,然後在需要時擴展到物理盒子。因此,您可以從您的應用程序開始瞭解大約20個memcached實例(根據對象ID選擇)。起初,所有20個在一臺物理服務器上運行。但是稍後你將它們分成2臺服務器(10/10),然後分到5臺服務器(4/4/4/4),最後到20臺物理服務器(每臺1個memcached)。因此,您可以通過移動虛擬機來擴展應用程序20x,而無需更改您的應用程序。
唯一真正的優勢是速度優勢是通過虛擬機將Docker容器中的memcached堆棧與「Memcached」相提並論。它是否正確?
不,這只是一個輕微的副作用。往上看。
此外,如何設置內存供docker容器中的memcached使用?
在docker run
命令中,只需使用-m
。
如果在一個主機下有兩個或多個Docker容器與Memcached,這將如何工作? (我再次假設兩個或更多不合理)。
相同的方式。如果您沒有設置內存限制,那麼就是,就像在主機上運行2個memcached進程一樣。 (如果有人填滿了內存,兩者都會發生內存不足錯誤。)
非常感謝您對我的問題提供了清晰準確的答案! – bhartsb