Cosa sono i container?
Un container è un pacchetto standalone leggero che incapsula un ambiente di runtime completo comprensivo di un'applicazione e le relative dipendenze (librerie, file binari e qualsiasi file di configurazione aggiuntivo), aumentando la portabilità, la scalabilità, la sicurezza e l'agilità di un'applicazione.
I container sono apprezzati da sviluppatori e operatori perché offrono un modo semplice per distribuire e gestire le applicazioni, indipendentemente dall'ambiente di destinazione. Semplificano le pratiche di DevOps e DevSecOps migliorando i passaggi di consegne tra i team di sviluppo e quelli delle operation.
I container consumano le risorse in modo efficiente, consentendo una densità e un livello di utilizzo elevati. I container possono essere utilizzati con quasi tutte le applicazioni, ma sono spesso associati ai microservizi, in cui più container eseguono componenti di applicazioni o servizi separati. I container che compongono un'applicazione sono in genere coordinati e gestiti tramite una piattaforma di orchestrazione dei container, come Kubernetes.
I container vengono creati pacchettizzando le applicazioni da più immagini di uno o più repository insieme a qualsiasi libreria o altre dipendenze dell'applicazione, eliminando i problemi di portabilità e compatibilità.

Un nuovo modo di creare container per Kubernetes

Le sinergie tra container e macchine virtuali
Container e VM a confronto
Quali sono i vantaggi dell'utilizzo di container?
L'utilizzo di container per creare applicazioni accelera la distribuzione di nuove funzionalità e incoraggia un ambiente di innovazione continua. I vantaggi includono quanto segue:
Agilità. La maggiore agilità degli sviluppatori aumenta la produttività e accelera lo sviluppo delle app. I container semplificano le pipeline CI/CD e sono ideali per i team DevOps e i deployment di microservizi.
Scalabilità e alta disponibilità. Utilizzando Kubernetes, i deployment dei container possono essere scalati verticalmente e orizzontalmente in modo automatico al variare dei requisiti dei carichi di lavoro, aumentando la disponibilità delle app.
Portabilità. I container consumano meno risorse e sono più leggeri delle VM. Le applicazioni containerizzate sono indipendenti dall'infrastruttura e funzionano allo stesso modo indipendentemente da dove vengono distribuite.
Resilienza. Un'applicazione containerizzata viene isolata e astratta dal sistema operativo e da altri container; un container può subire un guasto senza influire sugli altri container in esecuzione.
Standard per i container
Sicurezza dei container
I container richiedono modifiche al modo in cui le policy di sicurezza vengono implementate e gestite. La sicurezza deve essere integrata il più possibile nel ciclo di vita dei container, utilizzando un approccio di tipo DevSecOps. I team di sicurezza, che collaborano con i team di sviluppo e delle operation, adattano le policy di compliance e governance esistenti per accogliere nuovi strumenti e modifiche al ciclo di vita delle applicazioni.
Automazione dei container
L'impegno manuale rallenta i team di sviluppo. L'automazione dei container consente agli sviluppatori di concentrarsi sul codice anziché sulla pacchettizzazione. Le immagini dei container sono integrate in layer. Con un approccio automatizzato alla creazione di container, ogni volta che un layer cambia, solo quel layer deve essere aggiornato. Ad esempio, se è necessario aggiornare solo le librerie di sistema, è necessario ricreare solo il layer che contiene le librerie. Poiché gli altri layer rimangono invariati, il carico di test e convalida è ridotto, consentendo di inserire in produzione più rapidamente e con maggiore frequenza i container aggiornati.
Docker
Dalla sua introduzione nel 2013, Docker è stato quasi sinonimo di container e continua a essere utilizzato per creare le immagini dei container. L'ambiente Docker include un runtime dei container, nonché la creazione di container e la gestione delle immagini. Poiché Docker crea un'immagine del container standard OCI, le immagini Docker verranno eseguite su qualsiasi runtime del container conforme a OCI.
Kubernetes
Casi d'uso dei container
Per gli sviluppatori
- Migliora la portabilità delle applicazioni su diverse piattaforme e configurazioni, in modo che il codice sviluppato su una versione di un compilatore o un interprete di linguaggi venga eseguito senza problemi sulle versioni successive senza necessità di revisioni.
- Libera gli sviluppatori dal compito di sviluppare, testare e distribuire sulla stessa infrastruttura. In questo modo gli sviluppatori che scrivono codice sui loro laptop possono essere certi che l'applicazione verrà eseguita come desiderato su qualsiasi altra infrastruttura, sia essa un server on-premise o una VM basata su cloud.
- Facilita processi di sviluppo agili come CI/CD, accelerando l'accettazione del codice e il deployment.
Per le operation IT
- Migliora la sicurezza delle applicazioni isolandole da altre applicazioni in modo leggero.
- Migra senza problemi le applicazioni containerizzate tra diverse versioni di sistemi operativi, topologie di rete o configurazioni di storage e piattaforme cloud.
- Migliora l'efficienza IT abilitando l'esecuzione di più container di applicazioni su una singola istanza del sistema operativo. Poiché i container hanno spesso dimensioni di decine di megabyte, a differenza delle VM che hanno una dimensione di dieci o più gigabyte, un numero sostanzialmente maggiore di container può essere eseguito su una singola istanza del server.
Offri una scalabilità on demand estrema, attivando istanze di container aggiuntive in pochi millisecondi rispetto ai minuti necessari per attivare le VM.
Soluzioni e prodotti correlati
Modernizzazione delle applicazioni con Kubernetes
Offri Kubernetes predisposto per gli sviluppatori nel data center o nel cloud
Crea i container dal codice sorgente per Kubernetes
VMware Tanzu Build Service automatizza la creazione, la gestione e la governance dei container su scala aziendale.
Sfrutta una gestione Kubernetes multi-cloud
VMware Tanzu Mission Control è una piattaforma di gestione Kubernetes multi-cloud che virtualizza il cloud offrendo una piattaforma coerente basata su Kubernetes che consente la gestione, il funzionamento e la distribuzione delle applicazioni secondo necessità su qualsiasi cloud.