Per gli sviluppatori di software e di applicazioni c’è una nuova piattaforma che rappresenta ormai uno strumento standard e si chiama Docker. Questa piattaforma consente di creare in modo rapido, testare e distribuire qualsiasi tipo di applicazione, perché si basa sull’utilizzo di unità standardizzate chiamate container. Gli sviluppatori possono così usare Docker, che in pratica è un sistema operativo per container, per creare applicazioni pacchettizzate, dove ogni container si comporta proprio come un contenitore in cui si trova tutto il necessario per la corretta esecuzione dell’applicazione che si sta sviluppando: dalle librerie agli strumenti di sistema, dal codice al runtime.
I container si comportano come una macchina virtuale, dove però l’ambiente viene solo parzialmente virtualizzato.
Ogni “contenitore” agisce come ambiente isolato, in cui il sistema operativo non è eseguibile in modo completo, dato che il kernel è condiviso con l’host e virtualizzato a livello software. Queste caratteristiche lo rendono lo strumento ideale per gli sviluppatori e gli amministratori di sistema, che possono tenere sotto controllo le applicazioni, avviarle in modo rapido e testarle su qualsiasi ambiente.
Cos’è e come funziona Docker
Partiamo dal concetto di container in informatica, cioè di un ambiente che crea un contesto per eseguire un’applicazione. I container sono simili alle macchine virtuali, ma molto più leggeri: richiedono una forma di virtualizzazione che non ha bisogno dell’installazione di un sistema operativo, occupano lo spazio minimo indispensabile e non richiedono allocazione di memoria fissa, quindi non pesano troppo sulla RAM.
La tecnologia a container si è rivelata negli ultimi anni particolarmente utile, perché ogni container contiene una immagine che può essere predisposta o scaricata in qualsiasi tipo di ambiente.
La piattaforma software Docker è uno strumento per produrre, distribuire ed eseguire i container utilizzando come sistema operativo quello dell’host, così da operare la virtualizzazione solo a livello di software. I processi quindi possono essere isolati ed eseguiti in maniera indipendente, raggiungendo così l’obiettivo dei container, che permettono di eseguire più processi e applicazioni in modo separato, così da sfruttare meglio l’infrastruttura esistente e garantire un livello di sicurezza alto.
Le versioni moderne di Docker si basano su diversi componenti indipendenti: la Docker CLI, cioè la command line che permette l’interazione col terminale e invia i comandi al Docker daemon, che li esegue localmente o su un host remoto. Il componente finale è il runtime, che richiama le funzionalità del kernel e permette l’avvio effettivo del container.
Come usare Docker
La piattaforma Docker è disponibile per tutte le distribuzioni Linux e funziona anche sui sistemi operativi Windows e macOS. Dopo aver installato il pacchetto sul proprio computer, seguendo le istruzioni diverse per ogni sistema operativo, si potrà aprire l’interfaccia di Docker e iniziare a utilizzarlo. Il primo passo è testare il funzionamento del software installato creando un container semplice, utilizzando il comando
docker run [nome a scelta]
ad esempio, per il nome a scelta si potrà usare “Ciao mondo”. In questo modo, si creerà una prima immagine salvata come “Ciao mondo”, e nella schermata saranno elencate tutte le indicazioni per creare la propria immagine, come ad esempio da dove vengono presi i file nella linea FROM, dove vengono eseguiti nella linea RUN e da dove vengono copiati nelle linee COPY. Una volta che tutte le informazioni e i file sono stati recuperati, si potrà procedere con il comando
docker build -t [nome immagine],
che permette la costruzione dell’immagine mentre il tag -t le assegna il nome scelto. Una volta creata l’immagine, si potrà avviare un “contenitore” utilizzando il comando
docker run -d -p [numero porta host:porta container] [nome immagine],
dove il comando -d permette l’esecuzione in background del container mentre -p indica la mappatura delle porte da utilizzare per visualizzare sul local host l’immagine creata. Da questa immagine di partenza, si potranno poi utilizzare ulteriori comandi per creare le proprie applicazioni con Docker.
Docker: i vantaggi dei container
Tra i grandi vantaggi dell’utilizzo di container Docker c’è la modularità, cioè un approccio che consente di estrarre i singoli componenti di un’applicazione che sia da aggiornare o da riparare per un bug o problemi nel codice. I container sono formati da una singola immagine fatta a strati e ogni volta che un utente specifica un comando, si crea un nuovo strato.
Docker è in grado di riutilizzarli per velocizzare la creazione dei container, ma questa struttura permette anche di controllare e monitorare le diverse build in modo facile e rapido, anche utilizzando il rollback: se un’immagine non è soddisfacente, si potrà riportare alla versione precedente. Inoltre, è funzionante in ogni tipo di ambiente e garantisce una distribuzione rapida del software: la fase di configurazione ed esecuzione su un nuovo hardware grazie ai container Docker passa da giorni a pochi secondi.
Con Docker si possono creare container per ogni processo e condividere i processi simili con le nuove applicazioni, così da non dover riavviare il sistema operativo ogni volta che si vuole aggiungere o spostare un container e velocizzare il deployment. Questo rende i container Docker dei pacchetti standardizzati e leggeri da utilizzare, che velocizzano e semplificano di molto il lavoro degli sviluppatori.