2016-05-09 45 views
6

Sto provando a confrontare le prestazioni generali del sistema di esecuzione di Docker utilizzando Phoronix Test Suite 6.4.0 Milestone 2 in esecuzione all'interno di un contenitore fedora: 23 basato su immagini.Eliminazione dell'impatto di UnionFS sui risultati durante l'analisi comparativa all'interno di Docker

Una cosa che deve essere considerata è che Docker utilizza un UnionFS proprietario per memorizzare i dati. Tuttavia, quando si esegue un'applicazione reale (come Apache) all'interno di Docker, i dati permanenti vengono solitamente memorizzati su una cartella dedicata sull'host, in esecuzione su un filesystem Linux standard come ext4, o nel mio caso btrfs.

La soluzione che propongo è di utilizzare "docker volume" per installare una directory host nella finestra mobile. Il fatto è che non so quali directory devono essere utilizzate nei benchmark e devono essere montate all'interno del contenitore Docker.

La suite di test pts/disk, ad esempio, deve sicuramente utilizzare i volumi della finestra mobile anziché UnionFS. Contiene questi test.

pts/compress-gzip 
pts/sqlite 
pts/apache 
pts/pgbench 
pts/compilebench 
pts/iozone 
pts/dbench 
pts/fs-mark 
pts/fio 
pts/tiobench 
pts/postmark 
pts/aio-stress 
pts/unpack-linux 

Quali directory nel contenitore Docker devono essere montate dall'host (volumi mobili creati)? È anche una buona idea usare i volumi della finestra mobile? Ci sono altri avvertimenti da tenere in considerazione durante l'analisi comparativa di Docker?

risposta

0

Come accennato in "Mount a shared-storage volume as a data volume"

Oltre a montare una directory host nel vostro contenitore, alcuni Docker volume plugins consentono di fornitura e montaggio di storage condiviso, come ad esempio iSCSI, NFS, o FC.

Dal finestra mobile 1.9, questo è fatto con docker volume create (e poi si monta quei volumi nei loro percorsi ci si attende in contenitore)

che consente di:

quali directory nel contenitore Docker dovrebbe essere montato da host

Qualsiasi cartella che includono dati persistenti, e/o ha un elevato volume di operazioni di IO.

+0

Giusto per notare, la risposta alla domanda "perché utilizzare un plug-in del volume di dati come il flicker" invece di "volume dati Docker" è "A differenza di un volume di dati Docker collegato a un singolo server, un volume di dati Flocker, chiamato un set di dati, è portatile e può essere utilizzato con qualsiasi contenitore nel cluster. " Se sacrifico la portabilità, il volume dei dati Docker è funzionalmente equivalente e probabilmente anche più veloce di qualsiasi plug-in del volume Docker, giusto? – Slazer

+0

@Slazer Sono d'accordo. Preferisco semplicemente usare il volume del docker dal momento che docker 1.9 come, plugin o meno, mantiene i volumi più visibili, invece di essere nascosto come un contenitore che esiste solo per essere avviato (mai eseguito) e montato da altri contenitori. – VonC

+0

Potresti, per favore, consigliarmi, esaminando i test che sto per eseguire (in genere attività intensive di I/O su disco utilizzando applicazioni del mondo reale), quali cartelle sono le migliori candidate per essere montate dall'host (come volume docker o volume finestra mobile collegare)? Non ho programmato il test, quindi non vedo alcun modo semplice per indovinare quali cartelle sono in uso. I test vengono eseguiti come root all'interno di un contenitore Docker. – Slazer