15 Settembre, 2017 | Di

5 modi di utilizzare Docker a cui non avevi mai pensato

5 modi di utilizzare Docker a cui non avevi mai pensato

Più di 3300 contributors, 900.000 applicazioni "dockerizzate" e scaricate per un totale di 13 miliardi di download: questi sono i numeri che girano intorno a Docker, che quest’anno ha festeggiato 4 anni dal suo rilascio nel mondo dell’Open Source.

Notevoli anche gli ambiti di utilizzo: dalle transazioni finanziarie (Paypal) al mondo dell’healthcare (Varian Medical System), dai videogiochi (Riot Games) a “qualunque sistema cloud di Google”.

Ecco 5 validi utilizzi di Docker ai quali potresti non aver mai pensato!

1. Docker 4 Experiments

5 modi di utilizzare Docker a cui non avevi mai pensato

Fonte immagine: xkcd.com

Come scrive Carl Popper in “Logica della scoperta scientifica”: “Soltanto quando certi eventi ricorrono in accordo con regole, o regolarità, come nel caso degli esperimenti ripetibili, le nostre osservazioni possono essere controllate - in linea di principio - da chiunque. “

In campo accademico e universitario la ripetibilità di un esperimento è un elemento fondamentale per la verifica dello stesso. Ad ogni nuova scoperta, analisi, paper pubblicato sarebbe opportuno fornire gli strumenti o i dati necessari per verificarne la validità.

Per verificarne la validità in molti casi è necessario disporre di ambienti di lavoro simili, con condizioni di lavoro controllate e metodi di valutazione testabili.

Docker può essere una valida soluzione a tutti questi problemi.

Grazie al sistema di gestione dei container, descritto dal famoso slogan “Build, Ship, and Run Any App, Anywhere”, sarà possibile integrare alla ricerca effettuata lo stesso ambiente utilizzato per condurre calcoli e simulazioni, in modo da ottenere una ripetibilità dell’esperimento 1 a 1 con chiunque voglia verificarne la correttezza.

2. Cross-Compile Everywhere

5 modi di utilizzare Docker a cui non avevi mai pensato

Fonte immagine: wikipedia (utente Socram8888)

Ho appena comprato il mio nuovo computer: un magnifico MacbookPro con quella odiatissimaamatissima touchbar al posto dei tasti “Fqualcosa”.

Installate tutte le applicazioni essenziali, sono pronto a entrare nel magnifico mondo dello sviluppo software per microcontrollori!

Ho tutto il necessario: un single-board-computer con un processore ARM5 (vecchiotto, ma funzionante), i cavi sono tutti collegati e sono pronto a provare il mio nuovo programma. L’unica raccomandazione del produttore è: “non compilate direttamente sulla piattaforma, effettuate il cross-compiling sulla vostra macchina Linux utilizzando la guida qui sotto…”

Accidenti! Lo sapevo che non dovevo farmi attrarre da quell’oggetto con una mela disegnata sulla confezione. L’unica alternativa è avviare una macchina virtuale, installare Debian-chissàqualeversione, scaricare tutti i pacchetti uno ad uno e sperare di non dover ripetere l’operazione perché ho installato la versione sbagliata di gcc.

Per fortuna tutto ciò non sarà necessario: dopo aver installato Docker (disponibile sia su Mac che su Windows) posso avviare il container “Dockcross“ basato sull’immagine di Linux Debian, contenente tutti i tool (ed emulatori) per compilare e testare il mio progetto.

3. Deploy somewhere over the rainbow

5 modi di utilizzare Docker a cui non avevi mai pensato

Durante la DockerCon 2016 un intervento in particolare ha suscitato il mio interesse e stupore: l’aggiornamento software di un drone mentre stava volando.

Non è qualcosa che si vede tutti i giorni (anche se a detta dei ragazzi di resin.io che hanno presentato il talk possiamo ripetere l’esperimento a casa nostra). Normalmente quando si esegue un aggiornamento software, soprattutto per sistemi che hanno la peculiarità di muoversi nell’aria e che quindi sono in qualche modo anch’essi considerati software “critici”, è necessario almeno far atterrare l’oggetto in questione.

Grazie a Docker è stato possibile avviare in parallelo al software di volo un container con il nuovo programma che, quando ha terminato l’aggiornamento, ha avvertito il container principale che si è occupato di trasferire i propri dati al nuovo arrivato e passargli il “testimone”.

Con questo esempio non si è solamente dimostrata la capacità di gestire il deploy di un'applicazione in remoto in maniera semi-autonoma ma di farlo in modo tale che ci fossero solamente 50-200 ms di attesa nel passaggio di consegne.

Non ci credi? Ecco la prova:

4. Local stacks for

5 modi di utilizzare Docker a cui non avevi mai pensato

l software è una cosa complessa, e ai programmatori piacciono le sigle.

Quando si inizia a sviluppare un software una delle prime cose con cui ci si scontra sono tutte le sigle associate al sistema che andremo a realizzare: LAMP (Linux Apache, Mysql, Php), MEAN (Mongo, Express.js, Angular.js, Node.js), XRX (XML, Xquery, Rest, XForms), SMACK (Apache: Spack, Mesos, Akka, Cassandra, Kafka), NMP (Nginx, Mysql, Php), LAPP (Linux, Apache, PostreSQL, Php/Perl/Python), etc…

Scelto il linguaggio e le tecnologie da utilizzare: esiste uno stack pensato per il nostro utilizzo, con tutte le sue dipendenze software.

Il software è una cosa complessa e, oltre alle sigle, ai programmatori piacciono molto gli aggiornamenti.

Ogni novità si traduce però in una nuova versione del programma. Un giorno ho bisogno di Php5.6, il giorno successivo Php7.1 e la compatibilità sullo stesso sistema non è assicurata.

Spesso gli aggiornamenti apportano modifiche sostanziali al sistema di base tanto da generare conflitti difficilmente risolvibili in maniera semplice.

Il software è una cosa complessa. Per fortuna con Docker dobbiamo preoccuparci solo del software.

Con il sistema di gestione dei container di Docker possiamo facilmente confezionare un'applicazione o un servizio scritti in un qualunque linguaggio di programmazione senza il rischio di generare incompatibilità o conflitti di versioni. Containers isolati contenenti il software sono portabili, avviabili e rimovibili senza sforzo in qualunque macchina che esegue Docker.

Wellnet utilizza Docker in numerosi progetti. In particolare negli ultimi tempi sperimenta un nuovo tool sviluppato internamente in grado di aiutare la gestione di stack locali per qualsiasi progetto. Presto disponibile alla comunità Open Source: Zaratan

5 modi di utilizzare Docker a cui non avevi mai pensato

Fonte immagine: docker-blog

“I think it's fair to say that personal computers have become the most empowering tool we've ever created. They're tools of communication, they're tools of creativity, and they can be shaped by their user.” (Bill Gates)

I computer sono oggetti eccezionali in grado di fornire strumenti necessari ai suoi utenti per conseguire i propri obiettivi.

Per la maggioranza degli utenti, non sviluppatori, ma soprattutto per chi si avvicina ad alcune tecnologie per la prima volta in ambito scolastico, un grande ostacolo da superare riguarda la preparazione dell’ambiente di lavoro. Quando iniziano le lezioni dell’anno scolastico le prime ore saranno sempre utilizzate per la configurazione del sistema, ma quasi mai tutti partiranno dallo stesso livello.

“Devo installare tutto o solo una parte?” domanda uno studente. “Non funziona nulla!” esclama esasperato un altro. “Perché mi è uscita questa schermata blu?” conclude il terzo.

Usando Docker per la gestione della configurazione iniziale, il tempo perso in installazioni, configurazioni dei singoli componenti, correzione di errori effettuati durante la preparazione, potrà essere sfruttato al meglio per la sostanza dell’insegnamento, piuttosto che per la sua forma.

In questi primi giorni di settembre Lisa McNicol ha raccontato sul blog di Docker le iniziative per “Docker in higher education”. Un valido aiuto agli insegnanti di tutte le scuole.