Home
Che cos’è Docker e perché rivoluziona il deploy

02 Ottobre 2020

Che cos’è Docker e perché rivoluziona il deploy

di

La tecnologia per impacchettare applicazioni per farle funzionare su qualsiasi architettura guadagna terreno e suscita controversie.

Una rivoluzione nel mondo del deploy

Docker è sulla bocca di tutti nel settore IT da ormai diversi anni, ma spesso si sentono opinioni discordanti sul suo utilizzo. C’è chi ne parla come di una grande invenzione, mentre c’è chi teme che sia una sovrastruttura tecnologica non necessaria.

Prima di procedere con qualsiasi tipo di considerazione, è bene chiarire alcuni concetti chiave.

Che cos’è esattamente Docker?

Docker è uno strumento open source di containerizzazione utilizzato principalmente per l’impacchettamento e l’esecuzione rapida di applicazioni su piattaforme architetturalmente diverse. Il modo in cui Docker costruisce e distribuisce rapidamente il software riduce notevolmente il ritardo tra la scrittura del codice e la sua messa in produzione.

Docker è stato sviluppato utilizzando il linguaggio Go (creato da Google, con autori del calibro del pioniere dell’informatica Ken Thompson) ed è stato annunciato per la prima volta nel 2013 a Santa Clara durante l’annuale Python Developers Conference; inutile dire che la reazione dei partecipanti non è stata di accoglienza piena, in quanto l’idea sembrava il risultato di un tentativo di rinnovare tecnologie vecchie per farne qualcosa di non utile.

Da allora Docker ha raccolto più di 100 mila immagini pubbliche che vengono usate migliaia di volte ogni giorno da professionisti e non, ma anche da grandi aziende.

Iscriviti alla nostra newsletter

I vantaggi di Docker

Docker ha una serie numerosa di vantaggi che lo rende super utile. Alcuni tra questi sono:

  • Isolamento
    Docker permette di creare un sistema indipendente dall’ambiente su cui viene installato; sapere che la tua applicazione funzionerà senza problemi su diverse piattaforme toglie un bel peso a chi progetta l’architettura.
  • Portabilità
    Poiché tutte le dipendenze dell’applicazione stessa si trovano nello stesso blocco (o, in termini tecnici, container), è facile poter trasportare il software da un luogo all’altro, affidando a Docker la sua portabilità.
  • Leggerezza
    Al contrario di molti sistemi che vengono installati tramite macchine virtuali, Docker offre la possibilità di creare un sistema che viene posta strutturalmente sopra l’architettura di base necessaria a farla funzionare; in questo modo, non ci sarà bisogno di creare diverse macchine virtuali che consumano le risorse del tuo sistema, ma sarà Docker a occuparsene.
  • Robustezza
    Docker è molto meno esigente in termini di hardware e necessita di pochissima memoria rispetto alle macchine virtuali, fornendo quindi livelli di isolamento efficienti che aiutano a risparmiare non solo i costi ma anche il tempo.

Più efficienze, meno costi

I container Docker vengono avviati come eseguibili e, a differenza della virtualizzazione che occupa una parte significativa delle risorse di sistema, un container è proprio come un’altra applicazione eseguibile che fornisce un livello simile alla virtualizzazione, ma in un modo efficiente in termini di risorse e più sicuro. Proprio perché i container Docker condividono le stesse risorse di sistema, questo li rende efficienti; ad esempio, in un sistema in cui è necessario eseguire diverse applicazioni, è possibile avere diversi container Docker avendo comunque un certo livello di isolamento che di solito si ottiene utilizzando diverse macchine virtuali.

Uno degli aspetti più importanti dell’isolamento del container è che ogni container interagisce con il proprio filesystem privato; questo filesystem è fornito da un’immagine Docker. Ciò significa essenzialmente la necessità di meno risorse e, a sua volta, un minor costo.

Bene, ma che cos’è un’immagine?

Non è quello che pensi che sia; è sicuramente più simile al cartamodello di un abito. Puoi creare i tuoi container a partire da un’immagine proprio come è possibile copiare il cartamodello usando una fotocopiatrice. Un’immagine infatti non è altro che un modello contenente un’applicazione, così come tutte le sue dipendenze, il materiale di cui ha bisogno per eseguire la tua applicazione come il tuo codice, librerie, file di configurazione, variabili d’ambiente (ex-PATH) eccetera.

Questa immagine può essere distribuita in diversi ambienti e fornita a diversi sistemi. Una volta che abbiamo il cartamodello di base, possiamo modificarlo, cambiare le misure, scegliere la stoffa e via dicendo. Quando iniziamo a cucire il vestito sulla base del modello scelto e completiamo l’opera, a quel punto avremo ottenuto un container. Esatto: un container è un’istanza in esecuzione di un’immagine.

Perché usare Docker?

Potresti voler utilizzare Docker se hai bisogno di una distribuzione rapida e coerente della tua applicazione. Principalmente, gli ingegneri del software, gli ingegneri DevOps e molti altri professionisti nel settore IT possono trarre vantaggio da Docker: semplifica il ciclo di vita dello sviluppo del software consentendo agli sviluppatori di lavorare in ambienti standardizzati che funzionano a meraviglia per flussi di lavoro di integrazione continua e distribuzione continua.

Per saperne di più, leggi il mio libro: attraverso casi d’uso reali, vedrai quando è bene (e quando non lo è) usare Docker per portare avanti il tuo progetto.

Immagine di apertura di Daniel von Appen su Unsplash.

L'autore

  • Serena Sensini
    Serena Sensini è un’ingegnera e programmatrice con esperienza nella progettazione e nello sviluppo di soluzioni web e stand-alone from scratch. Appassionata di tecnologia e di linguaggi come Python e R, lavora come Enterprise Architect presso Dedalus S.p.A. e collabora con diverse aziende e associazioni per cui tiene corsi e seminari.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.

Corsi che potrebbero interessarti

Tutti i corsi
machine-learning-per-tutti-cover Corso Online

Machine Learning & Big Data per tutti

con Andrea De Mauro

Vuoi scoprire cosa significano Machine Learning e Big Data e come i computer possono realmente imparare in maniera automatica? Questo corso di Andrea De Mauro fa al caso tuo.

Comunicazione-digitale-food-wine-cover Corso Online

Comunicazione digitale Food & Wine - Iniziare Bene

con Barbara Sgarzi

Per il settore enogastronomico le reti sociali sono una grande opportunità per raccontarsi e trasmettere la qualità di un prodotto o di un locale. Se vuoi capire come farlo al meglio, il corso di Barbara Sgarzi può aiutarti.


Libri che potrebbero interessarti

Tutti i libri

Docker

Sviluppare e rilasciare software tramite container

34,90

49,89€ -30%

28,41

29,90€ -5%

19,99

di Serena Sensini

Analisi del linguaggio con Python

Imparare a processare testo e audio con le librerie open source

23,15

32,89€ -30%

18,91

19,90€ -5%

12,99

di Serena Sensini

Software Licensing & Data Governance

Tutelare e gestire le creazioni tecnologiche

22,40

29,89€ -25%

18,91

19,90€ -5%

9,99

di Simone Aliprandi


Articoli che potrebbero interessarti

Tutti gli articoli