Menu

Cosa sono i container?

cubi
Argomenti
Soluzioni DevOps

Share this page

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ù coerente
    I team DevOps sanno che le applicazioni nei container verranno eseguite allo stesso modo, indipendentemente dalla loro destinazione di implementazione.
  • Maggiore efficienza
    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:

  • "Lift and shift" delle applicazioni esistenti in 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 del 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 testing e l’implementazione ottimizzati a partire dalle immagini del container stesso.
  • 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.

Differenze tra 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.

Gestione della configurazione

Grazie all'integrazione con i tool già presenti nella pipeline DevOps, ora gli sviluppatori, i team addetti alle procedure di test e QA e alle operazioni possono utilizzare le risorse dell'infrastruttura come codice.

Soluzioni container

Accelera i workload containerizzati ovunque tu scelga di implementarli. Sia on-premise che nel cloud, NetApp offre soluzioni complete per la gestione dei dati.

Continuous Integration e Continuous Delivery (CI/CD)

Le soluzioni Continuous Integration e Continuous Delivery (CI/CD) di NetApp offrono agli sviluppatori un'esperienza migliore e consentono di testare e rilasciare il software in modo più affidabile in qualsiasi momento.

Container e storage persistente

Semplice e on-demand.

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

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

Scheda Bandwidth

Accelerazione del time-to-market per i nuovi servizi di viaggio

Con NetApp, gli sviluppatori di Despegar sono in grado di rilasciare rapidamente nuove funzionalità e aggiornamenti e a attrarre così nuovi visitatori sul sito e conquistare nuovi clienti. Gli sviluppatori hanno aumentato gli aggiornamenti e le implementazioni delle nuove applicazioni da 3-5 alla settimana a più di 300 al giorno.

Immagine Despegar
Bolle blu

Perché scegliere le soluzioni NetApp per DevOps

DevOps è lo strumento di cui il processo di sviluppo delle applicazioni ha sempre avuto bisogno. Anziché utilizzare funzioni autonome separate, i reparti di sviluppo software (Dev) e delle operazioni IT (Ops) possono collaborare con responsabilità end-to-end dalla fase di ideazione fino alla produzione.

NetApp consente di implementare un’esperienza DevOps perfetta e coerente on-premise, oltre che nei cloud privati e pubblici. In questo modo, il reparto delle operazioni può fornire un’infrastruttura automatizzata con meno complessità tecniche e gli sviluppatori possono lavorare in ambienti affidabili e prevedibili con meno ostacoli e più velocemente.

Scopri di più sui container