Mi chiedo perché si vorrebbe questo contro una VM configurata con Memcached?
Sicurezza: Se qualcuno rompe memcached e trojan il filesystem, non importa - il file system si butta via quando si avvia un nuovo Memcached.
Isolamento: È possibile limitare a fondo ciascun contenitore per evitare che utilizzi troppa RAM.
Standardizzazione: Attualmente, ogni app/database/cache/bilanciamento del carico deve registrare cosa installare, cosa configurare e cosa eseguire. Non esiste uno standard (e nessuna mancanza di strumenti come burattini, chef, ecc.). Ma questi strumenti sono molto complessi, non proprio indipendenti dal SO (nonostante le loro affermazioni), e portano la stessa complessità dallo sviluppo alla distribuzione.
Con la finestra mobile, tutto è solo un contenitore avviato con run BLAH
. Se la tua app ha 5 livelli, hai solo 5 contenitori da eseguire, con un minimo di orchestrazione in cima. Gli sviluppatori non devono mai "guardare nel contenitore" a meno che non si stiano sviluppando in quel livello.
Risorse: È possibile eseguire il routing di migliaia di container docker su un PC normale, ma si avrebbe problemi a girare su 100 di VM. Il limite è sia CPU che RAM. I container Docker sono solo processi in un chroot "avanzato". Su una VM, ci sono dozzine di processi in background (cron, logrotation, syslog, ecc.), Ma ci sono no processi aggiuntivi per la finestra mobile.
Sto indovinando che non avrebbe alcun senso per avere più di un contenitore memcached finestra mobile in esecuzione con lo stesso host
Dipende. Ci sono casi in cui si desidera suddividere la RAM in pacchi anziché a livello globale. (ad esempio, immagina se vuoi dedicare il 20% della cache alla memorizzazione nella cache degli utenti e il 40% della cache alla cache dei file, ecc.)
Inoltre, molti schemi di condivisione sono difficili da espandere, quindi le persone spesso iniziano con molti frammenti 'virtuali', quindi espandere su caselle fisiche quando necessario. Quindi potresti iniziare con la tua app conoscendo circa 20 istanze memcached (scelte in base all'ID oggetto). All'inizio, tutti e 20 funzionano su un server fisico. Ma in seguito li dividi su 2 server (10/10), poi su 5 server (4/4/4/4) e infine su 20 server fisici (1 memcached ciascuno). Pertanto, puoi ridimensionare l'app 20x semplicemente spostando le VM in giro e non modificando la tua app.
l'unico vero vantaggio è il vantaggio di velocità di "rotazione" dello stack memcached in un contenitore docker vs Memcached tramite una VM. È corretto?
No, questo è solo un piccolo vantaggio. vedi sopra.
Inoltre, come si imposta la memoria da utilizzare da memcached nel contenitore docker?
Nel comando docker run
, utilizzare solo -m
.
Come funzionerebbe se ci fossero due o più container di docker con Memcached sotto un host? (Sto assumendo nuovamente che due o più non avrebbero senso).
Stesso modo. Se non hai impostato un limite di memoria, sarebbe esattamente come eseguire 2 processi memcached sull'host. (Se si riempie la memoria, entrambi verrebbero fuori errori di memoria.)
Grazie mille per le risposte chiare e precise alle mie domande! – bhartsb