This is the Trace Id: 87570f422896f10d7b1d6dbba4fa540b
Passa a contenuti principali
Azure

Che cos'è un contenitore?

Un contenitore è un pacchetto standardizzato di software che può essere distribuito in modo rapido e affidabile nel cloud e in altri ambienti per supportare un'innovazione veloce ed efficiente.

Contenitore definito

Un contenitore, o contenitore software, è un pacchetto o un software autonomo che combina il codice dell'applicazione con librerie e le dipendenze del sistema operativo necessarie per eseguirlo. Può essere eseguito in modo coerente in qualsiasi ambiente di elaborazione, che si tratti del portatile di uno sviluppatore, di un server di test o di un servizio cloud di produzione. Grazie alla sua leggerezza e portabilità, un contenitore può essere distribuito, ridimensionato e gestito in modo efficiente praticamente su qualsiasi tipo di infrastruttura, incluse le piattaforme ibride e multi-cloud.

Punti chiave

  • Un contenitore riunisce tutto ciò di cui un'applicazione necessita per essere eseguita in modo affidabile in qualsiasi ambiente di elaborazione.
  • I contenitori nel cloud computing vengono usati per distribuire e gestire app moderne, incluse quelle che eseguono carichi di lavoro di intelligenza artificiale e machine learning, in diversi ambienti.
  • I contenitori sono più leggeri e portabili delle macchine virtuali, quindi sono più facili da ridimensionare.
  • I contenitori si integrano con le pratiche moderne di sviluppo delle app, come l'uso di architetture a microservizi e i flussi di lavoro DevOps. 
  • Le organizzazioni di diversi settori usano i contenitori per creare e gestire soluzioni sicure e scalabili.
  • Gli strumenti e i servizi ottimizzati per i contenitori, come la piattaforma di orchestrazione Kubernetes, semplificano la gestione dei contenitori.

Cosa sono i contenitori nel cloud computing?

I contenitori affrontano una sfida fondamentale nello sviluppo delle applicazioni: gestire il codice e le dipendenze di un'app in modo che l'app venga eseguita in modo coerente nei vari ambienti IT e non influisca sulle prestazioni di altre app in esecuzione nello stesso sistema. Tradizionalmente, gli sviluppatori dovevano pacchetti di software in più versioni perché potesse essere eseguito in ambienti diversi.

I contenitori risolvono questo problema offrendo un'infrastruttura leggera e non modificabile per la creazione di pacchetti e la distribuzione. Gli sviluppatori possono creare un pacchetto di un'app (o di un servizio), le relative librerie, i file di configurazione e le dipendenze insieme come singola immagine del contenitore. Possono poi testare l'app in contenitori come un'unità e distribuirla come istanza di immagine del contenitore in ambienti diversi con poche modifiche o senza alcuna modifica. Per questo motivo, i contenitori sono diventati un pilastro della strategia IT aziendale ed eseguono di tutto, dai servizi Web ai carichi di lavoro basati su intelligenza artificiale.

I contenitori cloud, che sono contenitori eseguiti in istanze cloud, sono diventati particolarmente indispensabili per il cloud computing. Offrono a sviluppatori e professionisti IT un modo coerente per distribuire e gestire applicazioni native del cloud moderne in diversi tipi di ambienti. Questi ambienti possono includere un'infrastruttura di cloud ibrido, che combina cloud pubblico, cloud privato e risorse locali e un'infrastruttura multi-cloud, che usa servizi cloud di più fornitori.

Poiché i contenitori possono essere riconfigurati rapidamente, offrono agli sviluppatori anche la flessibilità di avviare o arrestare in modo efficiente istanze cloud in base alle variazioni delle esigenze dei carichi di lavoro.

Qual è la differenza tra un contenitore e una macchina virtuale?

I contenitori e le macchine virtuali (VM) sono entrambi forme di virtualizzazione che isolano i carichi di lavoro dalle risorse di calcolo, ma lo fanno in modi diversi.

A livello generale, le VM virtualizzano le risorse hardware sottostanti, in modo che sia possibile eseguire più istanze del sistema operativo nell'hardware di supporto. Le macchine virtuali offrono molti vantaggi, tra cui la possibilità di eseguire sistemi operativi diversi nello stesso server, che si tratti di un server locale o di un server cloud. Consentono inoltre un utilizzo più efficiente ed economico delle risorse fisiche e un provisioning dei server più rapido. Tuttavia, poiché ogni VM contiene un'immagine del sistema operativo, librerie, applicazioni e altri componenti, possono diventare grandi, costose e difficili da spostare da un ambiente all'altro.

Un contenitore invece virtualizza il sistema operativo sottostante e fa in modo che l'app in contenitori 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.

I contenitori sono più portabili ed efficienti in termini di risorse rispetto alle macchine virtuali, ma sono vincolati al sistema operativo per cui sono stati definiti. Poiché tuttavia contenitori condividono il sistema operativo host, non devono avviare alcun sistema operativo o caricare librerie. Questo li rende molto più efficienti e leggeri, ma meno isolati. Le applicazioni in contenitori hanno anche meno bisogno di manutenzione, ad esempio per applicazione di patch e aggiornamenti.

Contenitori e macchine virtuali possono essere usati insieme. Per esempio, le organizzazioni possono eseguire i contenitori in VM anziché direttamente nell'infrastruttura, sfruttando così l'isolamento e la sicurezza delle VM e aumentando al tempo stesso l'efficienza.

Quali sono i vantaggi dell'uso dei contenitori?

Ecco alcuni dei principali vantaggi dell'uso dei contenitori:

  • Gestione delle app più semplice: contenitori semplificano la gestione delle applicazioni e dell'infrastruttura standardizzando il modo in cui il software viene inserito in pacchetti ed eseguito nei vari ambienti. Se combinati con strumenti di orchestrazione, i contenitori consentono aggiornamenti, rollback, ridimensionamento e monitoraggio automatizzati, contribuendo a rendere le operazioni più efficienti e resilienti.
  • Maggiore agilità: i team IT possono usare le app in contenitori per rispondere rapidamente alle esigenze aziendali in continua evoluzione e accelerare il time-to-market con nuove offerte e funzionalità. I contenitori supportano anche i moderni processi DevOps e le architetture a microservizi.
  • Portabilità tra ambienti: i contenitori offrono un formato standardizzato per il la creazione di pacchetti e l'archiviazione di tutti i componenti necessari all'esecuzione di un'applicazione. Ogni volta e ovunque venga distribuito un contenitore, in locale, nel cloud o in dispositivi perimetrali, viene eseguito in un ambiente coerente e invariabile. 
  • Scalabilità rapida: poiché i contenitori non hanno istanze separate del sistema operativo né gli altri requisiti di risorse aggiuntive tipici delle VM, è possibile supportare molti più contenitori sulla stessa infrastruttura. La natura leggera dei contenitori ne consente l'avvio e l'arresto veloce, consentendo scenari di aumento e riduzione rapida delle prestazioni.
  • Sicurezza avanzata: I contenitori virtualizzano le risorse di elaborazione a livello di sistema operativo, il che limita le superfici di cyberattacco e riduce il rischio che un componente compromesso influisca sugli altri. Questo isolamento integrato, combinato con le procedure consigliate e gli strumenti per la sicurezza dei contenitori, aiuta le organizzazioni a rilevare tempestivamente le minacce informatiche e a mantenere distribuzioni sicure e conformi in tutti gli ambienti.

Contenitori e sviluppo di app moderne

Grazie alle loro dimensioni ridotte e alla capacità di essere eseguiti praticamente ovunque, i contenitori si allineano a molti aspetti dello sviluppo di app moderno, tra cui:

  • Architetture a microservizi: i contenitori sono i blocchi fondamentali delle architetture a microservizi, che suddividono le applicazioni di grandi dimensioni in servizi piccoli, con accoppiamento debole, che eseguono funzioni specifiche e comunicano tramite API. Ogni servizio viene eseguito nel proprio contenitore, che può essere aggiornato, ridimensionato e distribuito in modo indipendente ed efficiente.
  • Flussi di lavoro DevOps: i contenitori sono anche componenti essenziali delle pipeline di integrazione continua e recapito continuo (CI/CD). Poiché consentono agli sviluppatori di usare ambienti di sviluppo, test e produzione coerenti e affidabili, i contenitori aiutano a semplificare i flussi di lavoro, accelerare il ciclo di vita dello sviluppo software e ridurre gli errori manuali.
  • Strategie di cloud ibrido e multi-cloud: facilmente spostabili tra le piattaforme, i contenitori offrono alle organizzazioni la flessibilità di combinare architetture di cloud ibrido e multi-cloud. Questo consente di effettuare il provisioning dell'infrastruttura e di altre risorse da provider di servizi cloud diversi in base alle proprie esigenze.
  • Migrazione e modernizzazione delle applicazioni: le applicazioni in contenitori semplificano la migrazione cloud consentendo alle applicazioni monolitiche tradizionali, che raggruppano tutti i componenti dell'applicazione in un'unica unità, di funzionare negli ambienti moderni con modifiche minime.
  • Carichi di lavoro di intelligenza artificiale e machine learning: i contenitori sono ideali per l'inserimento in pacchetti e l'esecuzione di app basate su intelligenza artificiale, come quelle necessarie per automatizzare i processi aziendali ed eseguire l'analisi predittiva. I modelli di Machine Learning indipendenti possono anche essere riprodotti e ridimensionati rapidamente in qualsiasi ambiente, garantendo coerenza dal training dei modelli all'inferenza.
  • Modelli di IA generativa: gli sviluppatori che lavorano con modelli linguistici, modelli di diffusione e altri modelli di IA generativa possono usare i contenitori per raggruppare in modo efficiente dipendenze complesse. Inoltre, possono usare strumenti di orchestrazione per app in contenitori per distribuire i modelli in modo rapido, sicuro e su larga scala.

Casi d'uso dei contenitori per settore

Ecco alcuni esempi reali di come organizzazioni di ogni tipo e dimensione usano i contenitori per ottenere maggiore efficienza, innovazione e scalabilità:

Automobilistico
Le case automobilistiche usano i contenitori per i servizi per veicoli connessi inclusi gli aggiornamenti della navigazione in tempo reale e i sistemi di infotainment, garantendo prestazioni costanti su milioni di veicoli.

Banche e finanza
Gli istituti finanziari si affidano ai contenitori per modernizzare i sistemi bancari principali, eseguire modelli di rilevamento delle frodi e creare app mobile-first nel rispetto delle rigide normative di conformità del settore.

Giochi
Le aziende produttrici di giochi usano i contenitori per eseguire servizi di matchmaking, classifiche e analisi su scala globale. I contenitori consentono loro di distribuire gli aggiornamenti in near real-time senza interrompere il gioco in tempo reale.

Sanità
Ospedali e centri di ricerca usano i contenitori per distribuire app di analisi sanitaria, rispettare i requisiti dell'Health Insurance Portability and Accountability Act (HIPAA) e gestire i dati sensibili dei pazienti in ambienti sicuri e isolati.

Retail
I retailer usano i contenitori per offrire esperienze di acquisto personalizzate, tenere traccia dell'inventario in tempo reale e ridimensionare i front end basati su microservizi durante i periodi di picco degli acquisti.

Produzione
I produttori si affidano ai contenitori per integrare dispositivi Internet of Things (IoT) e analisi predittiva in tempo reale nei processi di produzione, configurare ambienti di simulazione e semplificare la gestione IT e i costi.

Telecomunicazioni
I provider di telecomunicazioni distribuiscono contenitori al perimetro delle reti mobili per supportare stazioni di base basate su 5G che connettono IoT, telefono e altri dispositivi vicini al cliente.

Strumenti e servizi ottimizzati per i contenitori

Ecco alcuni strumenti e servizi diffusi progettati per aiutare le organizzazioni a gestire, proteggere e ridimensionare efficacemente le app in contenitori:

Piattaforme di orchestrazione dei contenitori
Una singola applicazione aziendale può comprendere centinaia o migliaia di contenitori distribuiti tra cluster di computer. Kubernetes aiuta ad affrontare le sfide associate automatizzando la distribuzione, il ridimensionamento e la gestione delle applicazioni in contenitori.

Strumenti di sicurezza per i contenitori
Gli strumenti di sicurezza specifici per i contenitori monitorano il comportamento in fase di esecuzione, analizzano le vulnerabilità, applicano i criteri e isolano i carichi di lavoro. I firewall per contenitori e la firma delle immagini sono comunemente usati per una protezione avanzata.

Contenitori serverless
Combinando le tecnologie di elaborazione serverless con le app in contenitori, gli sviluppatori possono eseguire i contenitori senza doversi preoccupare di server o infrastruttura. Sono ideali per le applicazioni guidate dagli eventi che devono gestire picchi di traffico.

Contenitore come servizio (CaaS)
Le piattaforme CaaS offrono ambienti del contenitore gestiti in cui gli sviluppatori possono distribuire e gestire i contenitori senza dover installare software di orchestrazione o occuparsi dell'infrastruttura.

Il futuro dei contenitori

Combinando un'applicazione con il relativo ambiente di runtime in un'unica unità autonoma, un contenitore software può essere spostato, ridimensionato e gestito in tutti i tipi di infrastruttura, incluse le piattaforme di cloud ibrido e multi-cloud. Versatili ed efficienti, i contenitori continueranno a evolversi e rimarranno fondamentali per il computing moderno.
Domande frequenti

Domande frequenti

  • Un contenitore cloud è un pacchetto software leggero e portabile che include tutto ciò che serve per eseguire app basate su intelligenza artificiale e altre applicazioni moderne in ambienti di cloud ibrido e multi-cloud.
  • I contenitori nel cloud computing consentono alle organizzazioni di competere in modo più efficace, consentendo di creare, testare e distribuire in modo efficiente applicazioni innovative su larga scala, ottimizzando al tempo stesso le risorse di calcolo.
  • Sia i contenitori sia le macchine virtuali isolano i carichi di lavoro dalle risorse di calcolo. Tuttavia, i contenitori condividono il sistema operativo host e sono leggeri e portabili, mentre le macchine virtuali eseguono un sistema operativo completo e sono più difficili e costose da spostare tra un ambiente e l'altro.
  • No, Kubernetes non è un contenitore. È una piattaforma di orchestrazione open source che automatizza la distribuzione, il ridimensionamento e la gestione delle applicazioni in contenitori.