Che cos'è un contenitore?

Pacchetti standardizzati e portabili per le tue applicazioni

Descrizione dei contenitori

Proprio come le società di spedizione usano contenitori fisici per isolare i diversi carichi, ad esempio per il trasporto su navi e treni, le tecnologie di sviluppo software fanno sempre più spesso uso di un approccio definito containerizzazione.

Un pacchetto standard di software, noto come contenitore, riunisce il codice di un'applicazione con le librerie e i file di configurazione correlati, nonché le dipendenze necessarie per l'esecuzione dell'app. Questo approccio permette agli sviluppatori e ai professionisti IT di distribuire applicazioni senza problemi negli ambienti.

Inizia a usare Docker

Perché i contenitori sono importanti

Il problema di un'applicazione che non viene eseguita correttamente in caso di spostamento da un ambiente all'altro è presente fin dalla nascita dello sviluppo software. Questi problemi si verificano in genere a causa di differenze nella configurazione correlate a requisiti delle librerie sottostanti e di altre dipendenze.

I contenitori risolvono questo problema offrendo un'infrastruttura leggera e non modificabile per la creazione di pacchetti e lo sviluppo di applicazioni. Un'applicazione o un servizio, le rispettive dipendenze e la relativa configurazione vengono inclusi insieme in un pacchetto sotto forma di immagine del contenitore. L'applicazione containerizzata può essere testata come un'unità e distribuita come istanza dell'immagine del contenitore nel sistema operativo host.

I contenitori permettono quindi agli sviluppatori e ai professionisti IT di distribuire applicazioni in diversi ambienti senza modifiche o con modifiche minime.

Scopri di più sulla genesi e sui vantaggi dei contenitori.

Guarda un breve video

Confronto tra contenitore e macchina virtuale

Quando le persone pensano alla virtualizzazione, pensano spesso alle macchine virtuali. In realtà la virtualizzazione può assumere forme diverse, ad esempio i contenitori. Qual è quindi la differenza tra le VM e i contenitori?

A un livello generale, le VM virtualizzano l'hardware sottostante, in modo che sia possibile eseguire più istanze del sistema operativo nell'hardware. Ogni VM esegue un sistema operativo e può accedere a risorse virtualizzate che rappresentano l'hardware sottostante.

Le VM offrono molti vantaggi, tra cui la possibilità di eseguire sistemi operativi diversi nello stesso server, un utilizzo più efficiente ed economicamente conveniente delle risorse fisiche e un provisioning più rapido dei server. Ogni VM, tuttavia, contiene un'immagine del sistema operativo, librerie, applicazioni e altro ancora e le VM possono quindi raggiungere dimensioni molto elevate.

Un contenitore virtualizza il sistema operativo sottostante e fa in modo che l'app containerizzata percepisca il sistema operativo, inclusi CPU, memoria, risorse di archiviazione di file e connessioni di rete, come se fosse dedicato esclusivamente a tale app. Poiché le differenze nel sistema operativo sottostante e nell'infrastruttura sono astratte, il contenitore può essere distribuito ed eseguito ovunque, purché l'immagine di base sia coerente. Questo approccio è estremamente interessante per gli sviluppatori.

Poiché i contenitori condividono il sistema operativo host, non devono avviare alcun sistema operativo o caricare librerie. I contenitori risultano quindi molto più efficienti e leggeri. Le applicazioni containerizzate possono essere avviate in pochi secondi ed è possibile includere nel computer un numero significativamente superiore di istanze rispetto a uno scenario con VM. L'approccio con sistema operativo condiviso offre il vantaggio aggiuntivo della riduzione del sovraccarico a livello di manutenzione, ad esempio per patch e aggiornamenti.

Benché i contenitori siano portabili, sono vincolati al sistema operativo per cui sono stati definiti. Un contenitore per Linux non può essere ad esempio eseguito in Windows e viceversa.

Vantaggi dei contenitori

Flessibilità

Quando gli sviluppatori creano e inseriscono le applicazioni in pacchetti mediante i contenitori e le forniscono al reparto IT per l'esecuzione in una piattaforma standardizzata, si riduce il lavoro richiesto complessivo necessario per la distribuzione delle applicazioni ed è possibile semplificare l'intero ciclo di sviluppo e test. Questo approccio incrementa anche la collaborazione e l'efficienza dei team responsabili di sviluppo e operazioni per una distribuzione più rapida delle app.

Portabilità

I contenitori offrono un formato standardizzato per la creazione di pacchetti e la conservazione di tutti i componenti necessari per eseguire l'applicazione desiderata. Questo approccio risolve il problema tipico "funziona nel mio computer" e consente la portabilità tra piattaforme del sistema operativo e tra cloud. Ogni volta che un contenitore viene distribuito ovunque, viene eseguito in un ambiente coerente che rimane invariato da una distribuzione all'altra. Hai ora a disposizione un formato coerente, dalla fase di sviluppo alla produzione.

Scalabilità rapida

Poiché i contenitori non comportano il sovraccarico tipico delle VM, incluse istanze separate del sistema operativo, è possibile supportare molti più contenitori nella stessa infrastruttura. La natura leggera dei contenitori ne consente l'avvio e l'arresto veloce, sbloccando scenari di aumento e riduzione rapida delle prestazioni.

Casi d'uso

Applicazioni native del cloud

Le applicazioni native del cloud si affidano ai contenitori per un modello operativo comune in diversi ambienti, inclusi gli ambienti pubblici, privati e ibridi. I costi generali ridotti e la densità elevata dei contenitori consentono di ospitare molti contenitori nella stessa macchina virtuale e li rendono ideali per la distribuzione di applicazioni native del cloud.

Lift-and-shift

Un'organizzazione può ottenere vantaggi significativi dalla migrazione al cloud, ma è possibile che non voglia riscrivere un'applicazione esistente. Grazie ai contenitori, puoi eseguire potenzialmente la migrazione delle applicazioni al cloud senza modificare il codice.

Batch

L'elaborazione batch indica attività che possono essere eseguite senza intervento umano o che possono essere eseguite in base alle risorse disponibili. Include ad esempio la generazione di report, il ridimensionamento di immagini e la conversione di file da un formato all'altro. I contenitori offrono un modo semplice per eseguire processi batch senza dovere gestire un ambiente e le dipendenze. Le opzioni di calcolo dinamiche, ad esempio Istanze di Azure Container, possono essere usate per inserire in modo efficiente i dati di origine, elaborarli e salvarli in un archivio durevole, ad esempio l'archivio BLOB di Azure. L'uso di questo approccio invece di macchine virtuali con provisioning statico può consentire di ottenere risparmi significativi sui costi grazie alla fatturazione al secondo.

Machine Learning

Machine Learning applica gli algoritmi ai dati e crea stime basate sui criteri individuati nei dati. I contenitori possono rendere le applicazioni di Machine Learning autonome e facilmente dimensionabili in qualsiasi ambiente.

Oltre i contenitori

Per massimizzare i vantaggi dei contenitori, prendi in considerazione soluzioni complete, inclusi strumenti e servizi ottimizzati per i contenitori che ti aiutano a ottenere flessibilità, sicurezza e scalabilità.

Orchestrazione

L'esecuzione di contenitori su larga scala richiede l'orchestrazione e la gestione di applicazioni containerizzate distribuite tramite una piattaforma di orchestrazione come Kubernetes.

Esplora Kubernetes con Azure

Sicurezza

I contenitori richiedono un approccio a più livelli, dall'immagine del contenitore all'isolamento del cluster. Per definire in modo ottimale la configurazione di queste tutele, usa le pipeline CI/CD.

Scopri i concetti essenziali sulla sicurezza per contenitori e Kubernetes

Contenitori serverless

Puoi incrementare ulteriormente la flessibilità con contenitori on demand. Usa le tecnologie per contenitori serverless per eseguire con facilità i contenitori senza dovere gestire i server e per il burst dai cluster Kubernetes quando il traffico presenta picchi.

Prova i contenitori serverless

DevOps

I contenitori permettono agli sviluppatori di condividere con facilità software e dipendenze in ambienti IT e di produzione. Se li combini con le procedure DevOps, puoi distribuire in modo efficace il codice più rapidamente e puoi ridurre i cicli di sviluppo del software.

Visualizza la guida per DevOps con Azure

Risorse

Possiamo iniziare quando vuoi - Prova gratuitamente i contenitori e Kubernetes con Azure