2013-07-29 10 views
6

Uno degli esempi Docker è per un contenitore con Memcached configurato. Mi chiedo perché uno vorrebbe questo contro una VM configurata con Memcached? Immagino che non avrebbe senso avere più di un contenitore docker memcached che gira sotto lo stesso host e che l'unico vero vantaggio è il vantaggio di velocità di "far ruotare" lo stack memcached in un container docker vs Memcached tramite una VM . È corretto?Qual è il vantaggio del contenitore Docker per un'istanza memcached?

Inoltre, come si imposta la memoria da utilizzare da memcached nel contenitore docker? Come funzionerebbe se ci fossero due o più container docker con Memcached sotto un host? (Sto assumendo nuovamente che due o più non avrebbero senso).

risposta

2

Sembra esserci due domande qui ...

1 - Il vantaggio è come si descrive. È possibile eseguire il sandbox dell'istanza e della configurazione memcached in contenitori separati in modo da poter eseguire più operazioni su un determinato host. Inoltre, lo spostamento dell'istanza memcached in un altro host è piuttosto banale e richiede solo un aggiornamento della configurazione dell'applicazione nel peggiore dei casi.

2 - docker run -m <inbytes> <memcached-image> limiterebbe la quantità di memoria che un contenitore memcached potrebbe consumare. Puoi eseguire quanti più di questi vuoi sotto un singolo host.

0

Potrei mancare qualcosa qui, ma Memcaching dice solo qualcosa sull'uso della memoria, giusto? I contenitori Docker sono molto efficienti anche nell'uso dello spazio su disco. Non hai bisogno di un sistema operativo su ogni VM, ma puoi condividere risorse. Spiegazione intensa con immagini sulla finestra mobile.io website.

18

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.)

+0

Grazie mille per le risposte chiare e precise alle mie domande! – bhartsb