Docker 1.0: impressioni, analisi e previsioni
In questo periodo sono successe parecchie cose, per questo ho preferito tralasciare un pochino il blog, ossia adattarlo ai nuovi ritagli di tempo di cui dispongo (che sono ancora inferiori a quelli che avevo prima) - un po’ tipo Calcare con il suo, non so se avete presente. Dico questo solo per giustificarmi di un’assenza prolungata: c’entra ben poco con quello che sto per introdurre.
Sul finale di questo mio periodo di assenza infatti è stato annunciato Docker 1.0, ossia una milestone release del progetto che maggiormente, probabilmente, da un anno a questa parte ha attirato la mia attenzione. Docker è, in buona sostanza, un modo intelligente di sfruttare LXC per innestare le applicazioni che configuriamo in dei veri e propri “container” virtuali, i quali poi possono essere esportati su qualsiasi altra macchina. È richiesto solo Docker; fornita un’infrastruttura di base, tutto il resto continuerà a funzionare. Docker è versatile, perché è eseguibile in istanze virtuali, ma anche su macchine fisiche, e così via. La praticità di Docker è innestabile a qualsiasi livello, e questo lo rende una tecnologia perfetta anche a livello enterprise.
Cosa significa Docker 1.0
Docker 1.0 significa un sacco di cose. Principalmente, significa che ora come ora Docker è una piattaforma in rapida crescita, che si appresta ad avere come target il mondo enterprise ad un livello visto sinora solo con tecnologie come OpenStack (e, ehm, Linux? Ma voglio andarci piano coi paragoni). Per questo motivo, mi aspetto che in questi mesi e principalmente nel prossimo anno Docker raggiunga un livello di diffusione planetario, anche perché il suo primo periodo di vita depone molto bene a suo favore: con i numeri che ha alle spalle, sicuramente è diventato una tecnologia su cui investire del tempo, che magari in Italia viene snobbata per alternative vecchie come il cucco e sostanzialmente best-effort, ma che magari può fornire buone opportunità per consulenze in aziende estere, anche di grandi dimensioni.
Docker 1.0 significa feature: la codebase si ingrandirà, tanto che con questo traguardo già abbiamo alcuni importantissimi segnali di un progetto sano e di successo, come un registry pubblico dei container (simile ad npm per Node.js, ma per i propri dock), chiamato Docker Hub, e tantissime caratteristiche come ottimizzazioni sullo scheduling e sulla rimozione dei container che, beh, non fanno che rendere Docker più production-ready di quanto già non fosse. Di quanto già non fosse per un motivo ben preciso: Docker è un software che, a prescindere dalla bontà de facto del codice sorgente, è stato capace di tirare su dei numeri notevolissimi mentre lo stesso team di sviluppo si spolmonava (beh, più o meno) a scrivere ovunque “do not run in production”. E di irresponsabili, per così dire, in giro ce ne sono stati parecchi. Alcune cifre e alcuni nomi ce lo possono testimoniare.
Momentum: numeri e fatti su Docker 1.0
Ce lo dice l’annuncio di rilascio: Docker per tutto l’ultimo anno, dal 20 marzo 2013, è stato praticamente il protagonista dell’innovazione emergente dal punto di vista dei sistemi e della virtualizzazione in container. Quello che abbiamo davanti, da qualche settimana, è un tarball che dietro nasconde questo:
- 460 contributor;
- 8.741 commit;
- 2.75 milioni di download;
- 14.000 “Dockerized apps”, che suppongo siano container uploadati su quello che ora è il Docker Hub.
Ma non solo: Docker ha subito un pesante endorsement da aziende che fregandosene del suo status hanno cominciato ad integrarlo nella propria infrastruttura e a sperimentarci su. Per esempio, una serie di nomi molto interessanti, anche di aziende che producono software che usiamo sul nostro PC ogni giorno:
Per non parlare dei casi di studio forniti da Atlassian, PuppetLabs, IBM, Netflix, Google.
Docker: risorse interessanti e tutorial
Contestualmente a tutto questo fiorire di Docker nella produzione e nella pre-produzione di aziende il cui fatturato arriva ad essere una parte rilevante dell'economia globale, hanno cominciato a spuntare come funghi risorse su Docker, insieme a degli articoli che spiegano come sfruttare al meglio questo software all'interno di determinati processi. Ne ho da poco cominciato a stilare una piccola collezione, che riporto qui di seguito allo stato attuale, anche per tenere traccia di come ad oggi sia messo il panorama. Periodicamente condividerò anche altro, ma già ora - che Docker non è nemmeno diventato per così dire pronto per il panorama enterprise - ci sono diversi post che hanno suscitato il mio interesse.
- Persistent volumes with Docker – Data-only container pattern - Un interessantissimo post che segnala come sia possibile creare dei container di soli dati per il management dei contenuti grezzi via Docker, in maniera da non perdere nulla, avere tutto ciò che facciamo tracciato tramite i sistemi di logging dell'infrastruttura e molto altro ancora. Utile, utile, utile. L'ho già detto utile?
- Red Hat mashes Docker containers into its Enterprise Linux distribution - Yes! Docker è attivamente supportato da Red Hat, il che significa che nella prossima Red Hat Enterprise Linux questa tecnologia sarà installabile con un colpo di yum e un po' di olio di gomito per quanto riguarda la configurazione. Certo, è un endorsement di piccola entità, ma venendo da un colosso come Red Hat che non dà mai niente per niente, sicuramente conta più che il Docker incluso in qualsiasi repository third-party di una distro a caso scalcagnata.
- Analyzing Docker’s New OSS: libchan and libswarm - L'annuncio di Docker 1.0 non ha significato solo stabilità, ma anche una serie di nuove librerie completamente open source per la composizione di servizi di rete complessi che fanno uso (tra le altro cose) anche di Docker. Libchan, libswarm e libcontainer sono dei fulgidi esempi di come un'azienda possa innovare non solo con il proprio prodotto di punta, ma con un ecosistema di librerie a corredo che rendono possibili delle caratteristiche piuttosto utili. Nell'articolo trovate tutti i dettagli, ad esempio, di come con un banale
docker ps
sia possibile grazie a libswarm avere una panoramica dei processi in esecuzione in più container. È una lucidissima analisi di come queste librerie appena rilasciate possano letteralmente cambiare il modo in cui è concepita e implementata la cloud che utilizziamo attualmente. - Integrating Docker with Jenkins for continuous deployment of a Ruby on Rails application - Un caso di studio piccolo, se vogliamo elementare, ma esemplare. I grandi software possono essere messi alla prova anche e soprattutto con piccoli compiti, e Docker con Jenkins non sfugge a questa logica: con questo tutorial possiamo implementare un piccolo caso di continuous integration dove Jenkins costruisce dei Docker container, e se i test unitari vanno a buon fine, li esegue. Personalmente, apprezzo molto questo tipo di contenuti, anche perché mostrano applicazioni reali di software che altrimenti non avremmo (quasi) idea di come usare. L'idea di utilizzare Docker come layer mediano in una struttura del genere è interessante (e onestamente non so come ho fatto a non pensarci prima. Genio! [cit. René Ferretti])
- Announcing Docker Automated Builds on Bitbucket - Atlassian non solo si impegna nello sperimentare con Docker, ma offre a tutti noi utenti di Bitbucket (e, ehm, spero presto anche di Stash) un modo per fruire delle Automated Build senza dover per forza ricorrere a GitHub. Un modo come un altro, questa partnership, per avvicinare delle community e generare un impareggiabile valore aggiunto.
Photo courtesy of Tristan Taussac