Hacklab X – Anno 2, Edizione Speciale 1

2a2246e_250Notiziario proteico in pillole finalizzato alla stimolazione linfatica dei membri dell’Hacklab di Cosenza ideato, scritto e diretto da Fiorentino Sarro. Il notiziario è inviato in copia al Talent Garden di Cosenza e Startup Calabria

A partire da questo numero Hacklab X è inviato in copia anche a Industria Italiana del Software Libero.

Con questo numero di HackLab X inauguriamo l’edizione speciale con contributi tematici di assoluta attualità. Il primo a cimentarsi è il nostro già noto collaboratore Pasquale De Rose. Un affabulatore informatico delicato ma incisivo. Come tema ha scelto Docker. Sapete quanto HackLab X ha promosso questo straordinario prodotto. Buona lettura e un grazie davvero di cuore a Pasquale De Rose. Il numero uno, almeno per HackLab X Edizione speciale.

Virtualizzazione? No grazie, preferisco Docker!

docker_logo

Introduzione

Non è semplice la vita delle aziende produttrici di software, sempre pronte a rincorrere l’agognata innovazione di cui tutti parlano. E noi, normali utenti, dobbiamo farci strada fra milioni di prodotti, proposte e servizi.

Lo sa bene la Docker Inc., azienda sviluppatrice dell’omonimo software che sta guadagnando l’interesse di tutta la rete.

Possiamo dire che è una delle aziende più avanti sulla piazza. A piccoli passi ha saputo adottare un modello Open Source che nessun’altra azienda era riuscita a sfruttare prima d’ora. D’altronde sono in molte le aziende che, di questi tempi, grazie anche a queste strategie vincenti, hanno seguito le orme di Google adottando il modello Open.

Basta pensare a Microsoft, che recentemente ha rilasciato .Net e altri componenti in licenza MIT.

Tra l’altro, a chi interessasse, Microsoft ha iniziato alcuni progetti open per la creazione di sistemi operativi, piuttosto fallimentari (chissà perché).

Per i più curiosi vi lascio qui il link.

Ma torniamo a noi e incominciamo a parlare di Docker, il vero protagonista di questo articolo.

Cos’è la virtualizzazione di sistemi operativi basata su container?

Bella domanda! Non tutti conoscono questa pratica a differenza della più comune virtualizzazione di un sistema. Quindi, mi soffermerò un’attimo su questo aspetto.

Poniamo il caso di avere un unico computer a cui dobbiamo far svolgere più compiti. E che per una qualche ragione i software per svolgere questi compiti non possono condividere lo stesso sistema operativo.

Un caso lampante potrebbe essere quello dell’uso di più versioni dello stesso programma sulla stessa macchina. Infatti, per evitare conflitti fra dipendenze, si potrebbe scegliere la strada della virtualizzazione in modo da smistare le versioni su container diversi.

Questa necessità viene soddisfatta da programmi di virtualizzazione di sistemi basati su container. Infatti, a differenza della normale virtualizzazione che prevede anche l’installazione di un sistema operativo dedicato, un container non è altro che una porzione della nostra macchina oppurtunamente ripartita. Essa, sostanzialmente, vive indipendentemente da qualsiasi altra installazione sul nostro computer condivivendone solo ed esclusivamente il kernel.

docker_blocksCgroups, questo sconosciuto

Google nel 2006 pensava già a questa tecnologia e al suo futuro. Infatti, è proprio da loro e, in particolare da Paul Menage e Rohit Seth, che nasce cgroups, componente fondamentale al funzionamento di qualsiasi programma di virtualizazione a container.

Inizialmente fu chiamato “process containers“, ma fu poi ribattezzato “control groups” per evitare di far confusione con il termine container usato già nel kernel Linux in altri ambiti. Venne rilasciato all’interno della build 2.6.24 del 2007.

cgroups si occupa di gestire e ripartire le risorse hardware tra cui CPU, RAM e processi di I/O.

In questo modo, oltre ad avere la sua parte fisica in memoria, il container avrà anche una parte di risorse totalmente dedicate.

Perché Docker

Esistono più software che svolgono lo stesso lavoro di virtualizzazione, basta citare OpenVZ o lmctfy. La nostra attenzione però si focalizza su Docker, perché come si dice comunemente, “ha reinventato la ruota” in modo più efficace.
E’ quello che può essere considerato il giusto connubbio fra tecnologia e accessibilità, rendendo quello che può essere considerato un lavoro piuttosto difficile e non adatto a tutti, un compito piacevole, veloce e sopratutto supportato dalla comunità.

Il programma si compone di due elementi principali, un client e un demone. Il primo ci permetterà tramite dei semplici passaggi di creare, configurare, modificare, gestire e condividere i nostri container. Al secondo, invece, è affidata la parte più importante del compito, quello di eseguire e aggiornarnare i container.

La comunità e la condivisione

Ed è proprio quest’ultima la parte forte di Docker. Diversamente da tutti gli altri programmi, da la possibilità di usare container pre-configurati dalla comunità e in seguito lo stesso utente potrà condividere i suoi.

Tutto è possibile tramite Docker Hub Registry che, molto similmente a servizi come Github o GoogleCode, offre agli utenti la possibilità di creare dei repository dove condividere le immagini dei propri sistemi operativi configurati.

Ogni repository sarà immediatamente disponibile nel Client di Docker.

Oltre gli standard

Altro punto di spicco è che, nonostante si appoggi anche lui su LXC (Linux Containers), per il programma è stata scritta l’apposita libreria libcontainer.

Scritta inizialmente in Go, poi convertita anche in altri linguaggi, questa libreria è la base di Docker. Essa fornisce un set di API scritte appositamente per dare la possibilità di implementare in modo semplice ed efficace container di qualsiasi tipo e su qualsiasi sistema operativo, creando così un livello di astrazione.

Questoa impostazione apre molte strade, tra cui l’uso della virtualizzazione su Kernel datati o direttamente su altri sistemi operativi. Infatti si è già parlato di una possibile conversione di Docker per il sistema operativo di casa Microsoft.

C? No, Go!

Per questi tipi di software che hanno bisogno di essere celeri e lavorare a basso livello si opta spesso per linguaggi come C o la sua evoluzione ad oggetti, ovvero il C++. Docker si distingue anche in questo, infatti tutto il codice è scritto in Go.

Go o Golang è un linguaggio con alle spalle cinque anni di sviluppo presso i laboratori Google e supervisionato dall’occhio attento di alcune menti sfornate direttamente dai Bell Labs.

Il linguaggio si basa concettualmente sul C ma punta tutto sulla semplicità, versatilità e sicurezza del codice. Evitando i paradigmi nati negli ultimi anni come quello ad oggetti o funzionale, si focalizza solo ed esclusivamente su quello imperativo, ampliandolo e migliorandolo, così da dare a tutti i programmatori nuove strade per scrivere i propri programmi.

Go in questi ultimi tempi ha diviso i programmatori in due gruppi distinti: chi lo ama e chi lo odia. Infatti, sono stati in molti quelli che lo hanno criticato duramente per il suo essere diverso dagli attuali standard, definendolo spesso un linguaggio antiquato e non adatto a grossi progetti.

Questa ultima affermazione, però, viene completamente smentita proprio da Docker.

La Docker mania

Non esiste un software che non sia stato virtualizzato o che non sia disponibile sui repository. Basta vedere la home, dove si può leggere “100 Official Image 45,324 Public Image”. Parliamo, quindi, di un sistema estremamente versatile che non si rivolge solo all’utente smanettone o all’uso in piccole imprese.
Ogni utente, grazie alle caratteristiche poco dispendiose di Docker, potrebbe iniziare a distribuire servizi, dando così un’ulteriore spinta in avanti a questo tenace progetto.

Link di approfondimento

Sito Ufficiale

Tutorial Guidato

Docker Community

Repository Dei Container

Postilla

Ringraziamenti al buon Fiorentino che ha saputo motivarmi a finire l’articolo e a Stefanauss (Stefano De Carlo) e Spax (Vincenzo Pirrone) che mi hanno dato delle dritte per la stesura dell’articolo. Spero di aver suscitato il giusto interesse e vi prometto che, visto il notevole interesse e il fermento che si sta creando in Hlcs su Docker, presto uscirà la seconda parte dell’articolo con una guida introduttiva.

L’autore

2a2246e_250Pasquale De Rose è un appassionato di informatica e videogiochi fin dalla tenera età. Attualmente è studente del corso di laurea di Informatica all’Unical (Università della Calabria) e fa parte dell’Hlcs da più di un’anno. Nel tempo libero sperimenta e scrive su tutto quello che riguarda l’informatica e l’elettronica.

E-Mail: james.lemon992@gmail.com
Twitter: @JamesSlimLemon
Google+: https://plus.google.com/u/0/104382196486780580727/posts
Blog: j-lemon.github.io/Punk_Overflow/

Leggi gli altri numeri di Hacklab X sul sito dell’Hacklab di Cosenza.

Siamo in cerca di collaboratori. Chi è interessato può contattare direttamente Fiorentino Sarro.

Un commento su “Hacklab X – Anno 2, Edizione Speciale 1”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *