La gestione dei container ha fatto molta strada. Per decenni, la gestione degli ambienti containerizzati è stata una faccenda relativamente semplice. L'idea moderna di un container informatico è apparsa originariamente negli anni '70, con il concetto utilizzato per la prima volta per aiutare a definire il codice di applicazione sui sistemi Unix.
La moderna tecnologia di containerizzazione si è evoluta costantemente da quei primi inizi e, quando le aziende utilizzano i container ora, ottengono molta più utilità per il loro investimento. Dalle piccole startup alle grandi aziende affermate, i framework di container si sono dimostrati sempre più in grado di generare workflow stabili con tempi di esecuzione ottimizzati e consegna continua.
I container sono unità eseguibili di software in cui il codice dell'applicazione è impacchettato insieme alle relative librerie e dipendenze. Sono confezionati in modo standardizzato in modo che il codice possa essere eseguito ovunque, che si tratti di desktop, IT tradizionale o cloud.
Ciò avviene attraverso una forma di virtualizzazione del sistema operativo (OS) in cui le funzioni kernel del sistema operativo (ad esempio, namespace e cgroup Linux, silo e job object di Windows) possono essere utilizzate per isolare i processi e controllare la quantità di CPU, memoria e disco a cui tali processi possono accedere.
La tecnologia dei container è cambiata radicalmente nel 2013 con l'introduzione di Docker e si è sviluppata senza sosta nel corso di questo decennio, guadagnando costantemente popolarità e accettazione da parte degli utenti. Chiaramente, c'era una domanda di mercato forte ma insoddisfatta di software di containerizzazione di questo tipo, come dimostra il rapido successo di Docker e la sua ormai schiacciante superiorità sul mercato.
Un sondaggio IBM del 2021 ha rivelato che il 61% dei rispondenti ha dichiarato di aver utilizzato i container in almeno il 50% delle nuove applicazioni create negli ultimi 2 anni. Un gruppo ancora più ampio di rispondenti (64%) ha dichiarato di aspettarsi di utilizzare i container per almeno il 50% delle app che creerà nei prossimi 2 anni.
I container si occupano di distribuire e proteggere i dati e di eseguire le app. Pertanto, è perfettamente logico che i settori IT siano i principali utenti del software di containerizzazione, con i seguenti settori classificati tra i primi tre beneficiari (link esterno a ibm.com):
Il mercato delle applicazioni containerizzate è attualmente dominato da due entità:
La piattaforma di containerizzazione più utilizzata è Docker. I container Docker sono stati originariamente costruiti intorno a Docker Engine nel 2013 e vengono eseguiti secondo un'application programming interface (API). Docker è in realtà una Platform-as-a-Service (PaaS) e il suo principale beneficio è la sua flessibilità. Docker può prendere qualsiasi applicazione e le sue dipendenze associate e trasformarla in un contenitore virtuale, che può essere eseguito su qualsiasi computer con sistema operativo Windows, macOS o Linux. Il sistema utilizza le immagini Docker, che sono modelli di sola lettura utilizzati per costruire i container, e i Dockerfile, che sono file di testo che accompagnano e spiegano le immagini Docker. Le immagini Docker e altre immagini di container richiedono uno spazio in cui essere eseguite. Questo viene gestito dal tempo di esecuzione dei container, una soluzione software che interagisce con il sistema operativo per creare lo spazio necessario all'esecuzione delle immagini dei container.
La piattaforma di orchestrazione dei container più popolare è Kubernetes, creata da Google nel 2014 ed è ancora popolare per la robustezza con cui automatizza l'implementazione del software, consente la scalabilità e supporta la gestione dei container. Inoltre, Kubernetes è un sistema open source e incoraggia l'avida partecipazione dei contributori (che ora supervisionano il progetto), con ogni fornitore di software che dà la propria interpretazione a Kubernetes. Ad esempio, con alcuni servizi, gli utenti possono non solo creare cluster Kubernetes, ma anche distribuire app web scalabili e analizzare i log.
Attualmente, Docker e Kubernetes sono di gran lunga gli strumenti più utilizzati per gestire i container informatici. Secondo le recenti proiezioni sulla containerizzazione (link esterno a ibm.com) per il 2024, Docker ora controlla un enorme 82,8% di questo mercato, mentre Kubernetes si attesta una quota di mercato dell'11,52%.
Per maggiori informazioni sulla correlazione tra Kubernetes e Docker, vedi "Kubernetes vs. Docker: perché non entrambi?"
Non mancano casi d'uso riconoscibili che coinvolgono i container perché stanno diventando sempre più importanti, soprattutto negli ambienti o negli ecosistemi di cloud computing. Molte organizzazioni stanno persino prendendo in considerazione i container come alternativa alle virtual machine (VM) per la loro scelta di una piattaforma di cloud computing generica per le applicazioni e i workload. Ma in questo ambito molto ampio, ci sono casi d'uso chiave in cui i container cloud-native sono particolarmente rilevanti:
I container, la containerizzazione o l'orchestrazione dei container sono anche fattori nelle seguenti soluzioni correlate:
Esistono due tipi fondamentali di container, e ognuno serve un gruppo diverso di tecnologie di container:
Conosciuti anche come "container del sistema operativo", i container di sistema consentono di eseguire molti processi diversi contemporaneamente. I container di sistema sono ideali per gestire le app tradizionali e per gestire le applicazioni monolitiche che sono progettate per eseguire una singola funzione, espressa attraverso un file eseguibile logico. Questi container sono anche attrezzati per ospitare l'architettura, le configurazioni e gli strumenti necessari per l'esecuzione delle VM. Come misura predefinita, i container di sistema proibiscono i filesystem a più livelli.
Tecnologie di container servite: BSD Jails, Linux VServer, LXC, OpenVZ, Solaris Zones
I container di applicazioni non sono così multifunzionali come i container di sistema, che possono eseguire più processi contemporaneamente. I container di applicazioni si chiamo così perché sono destinati a servire un'applicazione eseguendo una e una sola azione eseguibile. I container di applicazioni esistono per impacchettare e gestire un singolo servizio e non supportano filesystem a più livelli.
Tecnologie di container servite: Docker, Rocket
La containerizzazione richiede un po' di impegno e di equipaggiamento in più, ma dà i suoi frutti. Gli strumenti di orchestrazione dei container possono semplificare l'esperienza dei container per gli ambienti di produzione, indipendentemente dal punto in cui si trovano i prodotti nei rispettivi cicli di vita.
Con i servizi container IBM, basati su tecnologie open source come Kubernetes, puoi facilitare e accelerare il tuo percorso verso il cloud in modo rapido, sicuro e produttivo.