Menu

Cosa sono i container?

Argomenti
Soluzioni DevOps

Condivi questa pagina

I container sono una forma di virtualizzazione dei sistemi operativi. È possibile utilizzare un singolo container per qualsiasi tipo di esecuzione, da un microservizio o un processo software a un applicazione più complessa. Il container contiene tutti gli eseguibili necessari, il codice binario, le librerie e i file di configurazione. A differenza degli approcci che prevedono la virtualizzazione di macchine e server, i container non contengono immagini del sistema operativo. Questo li rende più leggeri e portabili, con un overhead significativamente inferiore. Nelle implementazioni di applicazioni di maggiori dimensioni, è possibile implementare più container sotto forma di uno o più cluster di container. Tali cluster possono essere gestiti da un container orchestrator come Kubernetes.

Vantaggi dei container

I container offrono una soluzione ottimizzata per creare, testare, implementare e ridistribuire le applicazioni su più ambienti dal laptop in locale di uno sviluppatore a un data center on-premise o addirittura al cloud. I vantaggi dei container includono:

  • Overhead ridotto
    I container richiedono meno risorse di sistema rispetto agli ambienti di macchine virtuali tradizionali o hardware, perché non contengono immagini del sistema operativo.
  • Maggiore portabilità
    Le applicazioni eseguite nei container possono essere implementate facilmente su più sistemi operativi e piattaforme hardware diverse.
  • Operatività più coerenten
    I team DevOps sanno che le applicazioni nei container verranno eseguite allo stesso modo, indipendentemente dalla loro destinazione di implementazione.
  • Efficienza migliorata
    I container consentono di implementare, correggere e scalare più rapidamente le applicazioni.
  • Miglior sviluppo applicativo
    I container supportano le attività Agile e DevOps per accelerare i cicli di sviluppo, testing e produzione.

Casi di utilizzo dei container

L’utilizzo dei container nelle organizzazioni include:

  • Trasferimento lift-and-shift delle applicazioni esistenti in moderne architetture cloud
    Alcune organizzazioni utilizzano i container per migrare le applicazioni esistenti in ambienti più moderni. Sebbene questa pratica offra alcuni dei vantaggi di base della virtualizzazione dei sistemi operativi, non offre tutti i vantaggi di un'architettura applicativa modulare basata su container.
  • Refactoring delle applicazioni esistenti per i container
    Anche se il refactoring è un processo più impegnativo rispetto alla migrazione lift-and-shift, offre tutti i vantaggi di un ambiente container.
  • Sviluppo di nuove applicazioni native dei container
    Proprio come il refactoring, questo approccio offre tutti i benefici dei container.
  • Miglior supporto per le architetture di microservizi
    Le applicazioni distribuite e i microservizi possono essere isolati, implementati e scalati più facilmente utilizzando building block per container singoli.
  • Supporto DevOps per l'integrazione e l'implementazione continue (CI/CD))
    La tecnologia dei container supporta la creazione, il test e l'implementazione semplificati dalle stesse immagini di container.
  • Implementazione più semplice di attività e processi ripetitivi
    I container vengono implementati per supportare uno o più processi simili, spesso vengono eseguiti in background, come le funzioni ETL o i batch job.

Qual è la relazione di Docker e Kubernetes con i container?

In genere, nel contesto degli ambienti container, sono due i tool e piattaforme utilizzati per la creazione e la gestione dei container. Si tratta di Docker e Kubernetes.

Docker è un ambiente di runtime utilizzato per creare e costruire software all'interno dei container. Utilizza immagini Docker (snapshot copy-on-write) per implementare applicazioni o software containerizzati negli ambienti di sviluppo, test e produzione. Docker è basato su open standard e può essere utilizzato negli ambienti operativi più comuni, tra cui Linux, Microsoft Windows e altre infrastrutture on-premise o basate sul cloud.

Tuttavia, le applicazioni containerizzate possono essere piuttosto complicate. Durante la produzione, in molti casi potrebbe essere necessario disporre di centinaia o migliaia di container separati. In tali casi, gli ambienti di runtime container come Docker si avvalgono di altri strumenti per orchestrare o gestire tutti i container operativi.

Uno dei tool più diffusi a questo scopo è Kubernetes, un container orchestrator in grado di riconoscere diversi ambienti di runtime container, tra cui Docker.

Kubernetes si occupa di orchestrare il funzionamento di più container. Gestisce aree come l'utilizzo delle risorse infrastrutturali sottostanti per le applicazioni containerizzate, quali la quantità di risorse di calcolo, di rete e di storage richieste. Gli strumenti di orchestrazione come Kubernetes semplificano l'automazione e la scalabilità dei workload basati su container per gli ambienti di produzione live.

Container e macchine virtuali (VM)

A volte gli utenti confondono la tecnologia dei container con le macchine virtuali (VM) o la tecnologia di virtualizzazione dei server. Sebbene esistano alcune analogie di base, i container sono molto diversi dalle macchine virtuali.

Le macchine virtuali vengono eseguite in un ambiente hypervisor in cui ogni macchina virtuale deve disporre di un sistema operativo guest proprio, con i file binari, librerie e applicazioni corrispondenti. Ciò comporta un notevole consumo di risorse di sistema e di overhead, in particolare quando più macchine virtuali vengono eseguite sullo stesso server fisico, ciascuna con il proprio sistema operativo guest.

Ogni container, invece, condivide uno stesso sistema operativo host o kernel di sistema ed è molto più leggero, spesso solo alcuni megabyte. L’avvio di un container può quindi essere eseguito in pochi secondi, a differenza delle macchine virtuali standard che richiedono normalmente diversi gigabyte e minuti.

NetApp e container

NetApp crede nella tecnologia dei container e sta lavorando a strumenti e innovazioni comprovati in grado di offrire e gestire storage persistente per qualsiasi applicazione, in qualsiasi luogo. Un esempio chiave di questo lavoro è lo sviluppo di Trident. Trident semplifica più che mai il consumo di storage persistente on-demand con le applicazioni containerizzate.

Stiamo lavorando attivamente su nuove soluzioni per accelerare DevOps promuovendo una maggiore velocità e agilità nello sviluppo software. Il consumo delle risorse dell'infrastruttura, come lo storage, dovrebbe essere semplice, ed è proprio con questo obiettivo che NetApp sviluppa soluzioni per la gestione dei container e per offrire una maggiore scalabilità delle applicazioni su una grande varietà di piattaforme.

Soluzioni e prodotti correlati

Soluzioni DevOps

Storie di successo del leader mondiale nella gestione e nello storage dei dati

Trasformiamo le comunicazioni di sicurezza in informazioni sui dati per i clienti

Bandwidth, provider di piattaforme API, offre servizi vocali, di messaging e gestione delle emergenze che interessano milioni di persone ogni giorno. Gli sviluppatori di Bandwidth si dedicano incessantemente all'innovazione per far evolvere la piattaforma dell'azienda e lanciare nuovi servizi sul mercato più rapidamente.

La banca svizzera rende i file onnipresenti con la tecnologia flash e MetroCluster IP di NetApp.

PostFinance si affida a strumenti e tecnologie all'avanguardia sviluppati o adattati in modo specifico per il mercato svizzero. I sistemi NetApp® forniscono i dati dei file per transazioni bancarie sicure e accelerano lo sviluppo di prodotti e servizi finanziari con storage persistente.  

Persona che guarda il monitor
Drift chat loading