Cos'è la containerizzazione?

Copia URL

Con containerizzazione intendiamo il raggruppamento di codice software e di tutti i relativi componenti necessari, come librerie, framework e altre dipendenze, in modo che risultino isolate in un proprio contenitore che chiamiamo "container".

Questo metodo consente di essere spostare ed eseguire in modo uniforme il software o l'applicazione contenuta nel container in qualsiasi ambiente e infrastruttura, indipendentemente dal sistema operativo eseguito. Il container costituisce una sorta di bolla, un ambiente di elaborazione circostante all'applicazione, che la mantiene indipendente da ciò che la circonda. Si tratta in sostanza di un ambiente di elaborazione portatile e completamente funzionale.

I container sono un'alternativa al coding in una piattaforma o sistema operativo quando il codice potrebbe non essere compatibile con il nuovo ambiente e lo spostamento dell'applicazione risulta quindi difficile, causando bug, errori e difficoltà che devono essere superate, ma che richiedono tempo, rallentano la produttività e aumentano la frustrazione.

Raggruppando tutti gli elementi di un'applicazione in un container che può essere spostato tra piattaforme e infrastrutture, l'applicazione potrà essere utilizzata dove necessario.

L'idea dell'isolamento dei processi non è nuova, ma è solo nel 2013, quando Docker ha presentato Docker Engine, che è stato definito lo standard per l'impiego dei container con strumenti di facile utilizzo per gli sviluppatori e un approccio universale alla creazione dei pacchetti. Da allora, l'adozione della tecnologia dei container ha registrato una forte accelerazione. Gli sviluppatori possono oggi scegliere tra varie piattaforme e strumenti di containerizzazione, ad esempio Podman, Buildah e Skopeo, che supportano gli standard di Open Container Initiative, un progetto avviato da Docker.

La caratteristica di leggerezza o portabilità dei container deriva dalla capacità di condividere il kernel del sistema operativo dell'host, evitando la necessità di disporre di un sistema operativo distinto per ogni container e consentendo l'esecuzione dell'applicazione su qualsiasi infrastruttura —bare metal, cloud — anche in macchine virtuali, come vedremo nel prossimo paragrafo. 

Inoltre, gli sviluppatori possono avvalersi degli stessi strumenti quando lavorano con i container in diversi ambienti host, il che semplifica nettamente lo sviluppo e il deployment di app containerizzate su diversi sistemi operativi.

Risorse da Red Hat

Una macchina virtuale (VM) è un ambiente virtuale che funziona come un sistema informatico virtuale autonomo, dotato di CPU, memoria, interfaccia di rete e storage, creato su un sistema hardware fisico, ubicato fuori sede o on premise.

La somiglianza tra containerizzazione e virtualizzazione sta nel fatto che entrambe consentono l'isolamento completo delle applicazioni, che le rende operative su più ambienti. La differenza sta invece nelle dimensioni e nella portabilità. 

Le VM hanno la maggiore dimensione, calcolata di solito in gigabyte. Contengono il proprio sistema operativo, che consente loro di eseguire contemporaneamente funzionalità ad uso intensivo di risorse. Il numero di risorse sempre maggiore a disposizione delle VM consente loro di estrarre, suddividere, duplicare ed emulare interi server, sistemi operativi, desktop, database e reti.

La dimensione dei più piccoli container è in genere calcolata in megabyte; essi non contengono altro che un'app e il proprio ambiente di esecuzione. 

Le VM sono ideali per le architetture IT monolitiche e tradizionali, mentre i container sono progettati per essere compatibili con le tecnologie più recenti quali cloud, CI/CD e DevOps

Scopri di più

I container sono spesso utilizzati per raggruppare singole funzioni che eseguono attività specifiche, noti come microservizi. Nei microservizi i componenti dell'applicazione sono suddivisi in servizi più piccoli e specializzati, che consentono agli sviluppatori di lavorare su una specifica area dell'applicazione senza incidere sulle sue prestazioni complessive. 

In questo modo l'app è sempre in esecuzione, anche durante gli aggiornamenti o la correzione dei problemi, accelerando le migliorie, i test e i deployment. 

Caratteristiche quali portabilità, compatibilità e scalabilità rendono microservizi e container simili e funzionali. 

Come vengono gestiti i container? È qui che entra in gioco l'orchestrazione dei container, ovvero l'automazione dei processi di deployment, gestione, scalabilità e networking dei container. 

Kubernetes è una piattaforma di orchestrazione per container open source che semplifica la gestione di applicazioni distribuite e containerizzate su larga scala. È sufficiente indicare a Kubernetes dove si desidera eseguire il software perché la piattaforma si occupi delle attività necessarie a distribuire e gestire i container.

Prima di essere donato alla Cloud Native Computing Foundation (CNCF), nel 2015, Kubernetes fu progettato e sviluppato dagli ingegneri di Google, uno dei primi contributori alla tecnologia per container Linux. Oggi CNCF è l'organismo responsabile della gestione della community Kubernetes, i cui contributori e amministratori volontari si occupano dello sviluppo, della manutenzione e delle release del prodotto.

Red Hat è stata una delle prime aziende a collaborare con Google all'iniziativa Kubernetes, sin da prima del lancio, ed è diventata il secondo contributore al progetto Kubernetes.

Red Hat OpenShift è la versione di Kubernetes per l'ambiente enterprise. Un prodotto software che include i componenti del progetto Kubernetes per la gestione dei container oltre a funzionalità per la produttività e la sicurezza fondamentali per le aziende più grandi. 

Il termine "OpenShift" fa riferimento alla tecnologia di orchestrazione dei container downstream che deriva dal progetto open source OKD, già noto come OpenShift Origin. Con "Red Hat OpenShift" si intende la suite di prodotti per l'orchestrazione dei container di Red Hat. I prodotti Red Hat OpenShift includono pacchetti contenenti diversi componenti preconfigurati, insieme a OpenShift, tra cui:

Scopri di più su Red Hat OpenShift

Hub

Il blog ufficiale di Red Hat

Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.

Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.

Continua a leggere

Microservices: i vantaggi di Red Hat OpenShift Serverless

Red Hat OpenShift Serverless estende Kubernetes per l'implementazione e la gestione di carichi di lavoro per il serverless computing.

Virtualizzazione: Container Linux e VM

Container e macchine virtuali consentono di isolare alcuni componenti IT per facilitarne l'utilizzo e la gestione. Scopri le differenze tra container e vm.

Cos'è il Kubernetes Java Client?

Il Kubernetes Java Client è una libreria client che permette di utilizzare il linguaggio di programmazione Java per interfacciarsi con Kubernetes.

Container: risorse consigliate

Articoli correlati