Docker: distribuiamo applicazioni di Elia Bellussi – e.bellussi@gmail.com Linux Day 2016 - Torino
Phisical vs Hipervisors Containers vs Hypervisors Chi sono Alcune definizioni Cosa è Docker Un po’ di storia Come funziona Phisical vs Hipervisors Containers vs Hypervisors Linux Day 2016 - Torino
Come funziona Registrator Docker per gli sviluppatori Cos’è Swarm Come funzione Swarm Cos’è Consul Come funziona Consul Cos’è Registrator Come funziona Registrator Docker per gli sviluppatori Docker per i sistemisti Linux Day 2016 - Torino
Le alternative Riferimenti Linux Day 2016 - Torino
Chi sono System Engineer per Consoft Sistemi S.p.A. Nel 2011 ho fondato l’associazione culturale Museo Piemontese dell’Informatica che dal prossimo anno diventerà Museo Internazionale dell’Informatica. Sono membro di NordEst Digitale, Torino Digitale, Stati Generali dell’Innovazione, IEEE. Linux Day 2016 - Torino
Chi sono http://www.mubit.it Linux Day 2016 - Torino
Alcune definizioni in ordine alfabetico Container: come dice la parola stessa esso è un apparato software, che contiene del codice. Control Groups: è una funzionalità del Kernel Linux che limita, conta ed isola l’uso delle risorse di un insieme di processi. Cluster: è un insieme di computer connessi tra loro tramite una rete telematica per distribuire il carico di lavoro. Linux Day 2016 - Torino
Alcune definizioni Daemon: programma eseguito in background che, tipicamente, fornisce un servizio all’utente. File System: insieme di tipi di dati astratti necessari per la memorizzazione, l’organizzazione gerarchica, la manipolazione, la navigazione, l’accesso e la lettura dei dati. Immagine: file che contiene dati, nella loro struttura tipica, di un dispositivo o di un supporto di memorizzazione. Linux Day 2016 - Torino
Alcune definizioni Inter Process Communication: tutte quelle tecnologie software il cui scopo è consentire a diversi processi di comunicare tra loro scambiandosi dati e informazioni. Kernel Linux: fornisce tutte le funzioni essenziali per il sistema; in particolare la gestione della memoria primaria, delle risorse hardware del sistema e delle periferiche, assegnandole di volta in volta ai processi in esecuzione. Linux Day 2016 - Torino
Alcune definizioni LXC: o Linux Container è un ambiente di virtualizzazione a container che opera a livello di sistema operativo. Namespace: è una collezione di simboli usati per organizzare oggettidi vario tipo in modo che questi possano essere ricollegati ad un nome. Orchestration: è l’automazione, coordinazione e gestione di sistemi informatici e servizi. Linux Day 2016 - Torino
Alcune definizioni Overhead: definisce le risorse accessorie richieste rispetto a quelle strettamente necessarie per un determinato scopo. Repository: ambiente in cui vengono gestiti i metadati. REST: REpresentational State Transfer (REST) è un tipo di architettura software per i sistemi di ipertesto distribuiti come il World Wide Web. Un insieme di interfacce uniformi separa i client dai server. Linux Day 2016 - Torino
Alcune definizioni Virtual machine: un software che crea un ambiente virtuale che emula tipicamente il comportamento di una macchina fisica grazie all'assegnazione di risorse hardware. Linux Day 2016 - Torino
Che cos’è Docker Docker è un progetto open-source che automatizza la distribuzione di applicazioni all'interno di container software, fornendo un'astrazione addizionale grazie alla virtualizzazione a livello di sistema operativo di Linux. Linux Day 2016 - Torino
Un po’ di storia Solomon Hykes ha creato Docker come un progetto interno di dotCloud, un'azienda platform as a service, grazie al lavoro di altri ingegneri di dotCloud tra cui Andrea Luzzardi e Francois-Xavier Bourlet. Linux Day 2016 - Torino
Un po’ di storia Jeff Lindsay è stato coinvolto nel progetto come collaboratore esterno. Docker rappresenta l'evoluzione della tecnologia proprietaria di dotCloud, a sua volta realizzato grazie a precedenti software open-source come Cloudlets. Linux Day 2016 - Torino
Un po’ di storia Docker è stato pubblicato come open source nel marzo 2013. Il 13 marzo 2014, con il rilascio della versione 0.9, Docker non utilizza più LXC come ambiente di esecuzione di default, sostituito dalla propria libreria libcontainer scritta nel linguaggio di programmazione Go. Linux Day 2016 - Torino
Un po’ di storia Il 13 aprile 2015 il progetto aveva oltre 20700 stelle su GitHub (rendendolo il ventesimo progetto più seguito di GitHub), più di 4700 fork e quasi 900 contributori. Linux Day 2016 - Torino
Come funziona Docker utilizza le funzionalità di isolamento delle risorse del kernel Linux come ad esempio cgroups e namespaces per consentire a "container" indipendenti di coesistere sulla stessa istanza di Linux, evitando l'installazione e la manutenzione di una macchina virtuale. Linux Day 2016 - Torino
Come funziona I namespace del kernel Linux per lo più isolano ciò che l'applicazione può vedere dell'ambiente operativo, incluso l'albero dei processi, la rete, gli ID utente ed i file system montati, mentre i cgroups forniscono l'isolamento delle risorse, inclusa la CPU, la memoria, i dispositivi di I/O a blocchi e la rete. Linux Day 2016 - Torino
Physical vs Hypervisors Difficile da migrare Overhead minimo Facile da migrare Overhead massimo Physical Virtual Machine Linux Day 2016 - Torino
Containers vs Hypervisors Namespace Cgroups Chroots Linux Day 2016 - Torino
Containers vs Hypervisors Namespace Cgroups Chroots Docker client libcontainer Docker daemon Linux Day 2016 - Torino
Containers vs Hypervisors La virtualizzazione permette di essere più efficienti rispetto all’uso di hardware specifico per ogni applicazione. La tecnologia dei container permette di migliorare ancora lo sfruttamento delle risorse e di risparmiarle evitando di doverle suddividere con uno strato aggiuntivo relativo agli n sistemi operativi da installare. Linux Day 2016 - Torino
Containers vs Hypervisors L’uso di container permette, inoltre, di risparmiare tempo, (ore/uomo) perché evita di dover realizzare configurazioni specifiche di macchine virtuali per ogni applicazione. Viene configurata un’unica macchina anche virtuale in modo da clonarla e ridistribuirla. Dopo di che si provvede alla pubblicazione delle applicazioni tramite i container. Linux Day 2016 - Torino
Cos’è Swarm Si tratta di un sistema di clustering navito per Docker. Esso serve a rendere un pool di host Docker come un’unico host virtuale. Usando API standard di Docker ogni tool che comunica con Docker può usare trasparentemente Swarm per scalare trasparentemente con host multipli. Linux Day 2016 - Torino
Come funziona Swarm Una volta installato Swarm, un host farà da manager per orchestrare e schedulare i container nell’intero cluster. Esso gestirà una serie di agenti chiamati anche nodi. Gli agenti sono dedicati ad ospitare i container e sono daemon di Docker, pertanto vi si può comunicare tramite le API di quest’ultimo. Swarm, tra le alternative di clustering, può sfruttare Consul. Linux Day 2016 - Torino
Come funziona Swarm Swarm permette di avere alta disponibilità per la gestione dei failover dell’istanza di gestione creando un manager primario e più repliche. Il primario è il single point of contact del cluster anche se si può comunicare direttamente con le repliche che fanno da proxy verso il primario. Linux Day 2016 - Torino
Cos’è Consul Consul fornisce più funzionalità a Docker. Abbiamo: Service Discovery Healt Checking Key/Value Store Multi Datacenter Linux Day 2016 - Torino
Cos’è Consul Consul è un sistema distribuito ad alta disponibilità. Ogni nodo ha un agente Consul anche se questo non è richiesto per scoprire altri servizi. L’agente è responsabile per il controllo dello stato di vita del servizio sul nodo e del nodo stesso. Linux Day 2016 - Torino
Come funziona Consul Gli agenti comunicano con uno o più server Consul. I server Consul ospitano e replicano le informazioni ed eleggono tra loro un leader. Le componenti dell’infrastruttura che necessitano di conoscere altri servizi o nodi possono richiedere le informazioni ai server o ai nodi che girano la richiesta ai primi. Linux Day 2016 - Torino
Cos’è Registrator Registrator tiene d’occhio nuovi container Docker e li analizza per determinare quali servizi mettono a disposizione. Inserisce automaticamente nell’elenco dei servizi, ad esempio in Consul, ogni servizio che trova in un container. Linux Day 2016 - Torino
Come funziona Registrator Un servizio è qualsiasi cosa che ascolta tramite una porta. Se un container ascolta su più porte, allora verranno elencati più servizi. Registrator, per ogni servizio che elenca, prende informazioni dal container relativo e tra esse abbiamo anche metadata definite dell’utente. Il servizio viene poi inserito nel registro apposito. Linux Day 2016 - Torino
Docker per gli sviluppatori Nuovo codice Immagine Docker Linux Day 2016 - Torino
Docker per i sistemisti Cluster Swarm Gestione Forward Forward Richieste alle API Linux Day 2016 - Torino
Le alternative Kubernetes: è un sistema di distribuzione automatica, scalabilità e gestione di applicazioni in container. Apache Mesos: è un sistema di astrazione di CPU, memoria, hard drive e altre risorse sia fisiche sia virtuali. Marathon: è un software di orchestrazione dei container per Apache Mesos. Linux Day 2016 - Torino
I riferimenti http://progrium.com/blog/ https://hub.docker.com/r/progrium/consul/ https://hub.docker.com/r/progrium/registrator/ http://gliderlabs.com/projects/ https://www.consul.io/ https://docs.docker.com/swarm/ Linux Day 2016 - Torino
I riferimenti https://www.youtube.com/watch?v=Q5POuMHxW-0 https://www.youtube.com/user/dockerrun https://www.docker.com/products/resources/video-tutorials https://training.docker.com/self-paced-training Linux Day 2016 - Torino
I riferimenti http://kubernetes.io/ http://mesos.apache.org/ https://mesosphere.github.io/marathon/ Linux Day 2016 - Torino