Docker data container: come gestire lo storage dati su Docker

Docker data container: come gestire lo storage dati su Docker
13 gennaio 2017
0 commenti

Abbiamo già visto su neeners come la tecnologia di containerizzazione Docker stia vivendo un momento di grande gloria, dovuto soprattutto al fatto che Docker rappresenta la prima vera piattaforma in grado di mettere ordine nel caos dei container Linux-based.  

Tra le numerose possibilità offerte, in questo articolo approfondiremo un aspetto importante che da sempre preoccupa chi si trova a gestire progetti web, stiamo parlando dello storage dei dati.
Perché Docker e non una tradizionale Virtual Machine vi chiederete? Chi adotta una soluzione di conteinerizzazione lo fa soprattutto perché vede in questa tecnologia una versione molto più light e gestibile della virtualizzazione tradizionale, inoltre molte delle implementazioni container sono Open Source, e quindi permettono di usufruire di vantaggi in termini di cost effective.

 

Come funziona lo storage in Docker
Ora che abbiamo contestualizzato la funzione dei container, approfondiamo i due metodi principali con i quali è possibile andare a trattare i dati all’interno e tra container. I metodi sono due: data volumes e data volumes container. Vediamo la differenza tra i due. 

Quando parliamo di data volume facciamo riferimento a un’unità specificatamente designata all’immagazzinamento dei dati, in grado di bypassare l’Union File System. I data volumes si rivelano molto funzionali perché permettono di utilizzare particolari funzionalità per il trattamento dei dati persistenti o condivisi, come ad esempio l’avvio automatico dell’inizializzazione del volume quando da esso viene creato un container (ad esclusione dei volumi che contengono una host directory), la condivisione e il riutilizzo dei volumi tra diversi container e la persistenza dei dati indipendentemente dal ciclo di vita del container stesso.
Docker non elimina mai automaticamente i volumi quando il container associato viene cancellato: in questo modo si evita la creazione di volumi “spazzatura” contenenti dati su container che non esitono più.

 

Come creare un data volume
Per creare un data volume all’interno di un container è sufficiente spuntare il flag -v e utilizzare il comando docker create e docker run command. In questo modo è possibile montare uno o più volumi nel container della vostra web application.

Come creare un data volume

Questo comando creerà un nuovo data volume all’interno di un contenitore /webapp.

 

Come localizzare un data volume
È possibile individuare il volume sull’host digitando il comando docker inspect. Nell’output d’uscita sono contenuti i dettagli sulle configurazioni dei container, tra cui i data volume.

Come localizzare un data volume

Un possibile output potrebbe apparire così:   

output comando docker inspect

Il posizionamento esatto del volume è indicato alla voce source, mentre la voce RW indica se il volume possiede permessi di scrittura/lettura.

 

Montare un host directory come data volume
E se il file che vogliamo montare è un host directory? Oltre a utilizzare il comando -v è possibile montare la directory direttamente dentro al container.

Come montare un host directory come data volume

Questo comando monta la directory host, /src/webapp, nel contenitore  /webapp. Se il percorso /webapp esiste già all’interno dell’immagine del container,  il /src/webapp monterà le due directory in sovrapposizione, senza però rimuove il contenuto preesistente. Una volta che il volume verrà espulso, il contenuto della directory tornerà accessibile.

In questo particolare caso il container -dir deve sempre essere un percorso assoluto, esattamente come per /src/docs. host-dir può invece essere o un percorso assoluto o un name value.

Montare un host directory può essere particolarmente indicato nella fase di test degli applicativi. Ad esempio, dopo aver caricato il codice sorgente all’interno del container, è possibile modificarlo in tempo reale per vedere come queste modifiche influiscono sull’applicativo. Di default Docker monta i volumi con permessi di scrittura/lettura, può però essere impostata al momento del montaggio la sola modalità di lettura, aggiungendo ro  alla stringa.

host directory in sola lettura

Montare uno shared-storage come data volume
Oltre al montaggio di un directory host nel vostro container, alcuni plugin di volume Docker consentono il montaggio di storage condivisi (ad esempio iSCSI, NFS, o FC).

Il vantaggio nell’utilizzo di storage condivisi è che sono host-indipendenti; ciò significa che un volume può essere reso disponibile per qualsiasi host su cui il container è avviato.

Un modo per utilizzare i volume driver è attraverso il comando docker run.  In questo caso i volumi vengono creati per nome e non per percorso assoluto, come abbiamo visto sinora. 

Il comando crea quindi un named volume, identificato con my-named-volume e utilizza il driver di volume Flocker (un plugin per il multi-host dei volumi) che lo rende disponibile all’interno del container senza /webapp. Prima di eseguire il comando, è necessario installare Flocker o in alternativa sostituire questo plugin con il comando local 

Montare un volume shared come data volume

 

Attenzione! I container multipli possono anche condividere uno o più volumi di dati. Tuttavia, più container hanno permessi di scrittura su un singolo volume condiviso, più sale la possibilità di corruzione dei dati. È quindi importante assicurarsi che le applicazioni siano progettate per scrivere su archivi di dati condivisi.

 

La piattaforma neen Jelastic PaaS

Vuoi iniziare a utilizzare Docker ma non sai come? neen mette a disposizione di DevOps e software house neen Jelastic PaaS, la piattaforma as a service che unisce l’elasticità dello IaaS alla semplicità di utilizzo del PaaS. Con neen Jelastic PaaS è possibile creare istanze “pacchettizzate”, trasferibili e portabili tra diversi sistemi e Cloud grazie alla tecnologia a container. 

L’affidabilità hardware è garantita in modo nativo attraverso i meccanismi di live migration, in grado di operare una migrazione a caldo dei servizi in caso di eventuali failure hardware. L’alta affidabilità applicativa è invece soddisfatta attraverso meccanismi di load balancing descritti, che distribuiscono il carico dell’applicazione su più server cloud; ogni server è istanziato su diversi hardware a garanzia di ulteriore ridondanza.

 

Inizia subito a utilizzare neen Jelastic PaaS: su neen.it è possibile accedere alla versione trial della piattaforma. Se invece desideri maggiori informazioni scrivi a sales@neen.it o chiama il numero 02.45485420

 

Jessica  Ventura Social Media Manager