Cosa sono i contenitori?
Esplora le soluzioni container di IBM Abbonati per ricevere gli aggiornamenti cloud
Illustrazione con collage di pittogrammi di monitor del computer, server, nuvole, punti
Cosa sono i contenitori?

I container sono unità eseguibili di software in cui il codice dell'applicazione viene impacchettato insieme alle librerie e alle dipendenze, secondo modalità comuni, in modo che il codice possa essere eseguito ovunque, che si tratti di desktop, IT tradizionale o cloud.

I container utilizzano al meglio una forma di virtualizzazione del sistema operativo (SO) in cui le funzionalità kernel dell'SO (ad esempio, namespace e cgroup Linux, silo e job object di Windows) possono essere utilizzate per isolare i processi e controllare la quantità di CPU, memoria e disco a cui tali processi possono accedere.

I container sono piccoli, veloci e portatili perché, a differenza di una macchina virtuale, non hanno bisogno di includere un sistema operativo guest in ogni istanza e possono invece semplicemente utilizzare le funzionalità e le risorse del sistema operativo host.

I container sono apparsi per la prima volta decenni fa con versioni come FreeBSD Jails e AIX Workload Partitions, ma la maggior parte degli sviluppatori moderni ricorda che il 2013 è l'inizio dell'era dei container con l'introduzione di Docker.

La modernizzazione strategica delle applicazioni spinge la trasformazione digitale

La modernizzazione delle applicazioni strategica è fondamentale per il successo della trasformazione e può incrementare i ricavi annuali e ridurre i costi di manutenzione e di gestione.

Contenuti correlati

Registrati per ricevere la guida su DaaS

Container e macchine virtuali

Per capire meglio cos'è un container possiamo dire in che cosa differisce da una tradizionale macchina virtuale (VM). Nella tradizionale virtualizzazione, che sia on-premise o nel cloud, viene utilizzato un hypervisor per virtualizzare l'hardware fisico. Ogni macchina virtuale contiene quindi un sistema operativo guest e una copia virtuale dell'hardware necessario per l'esecuzione del sistema operativo, insieme a un'applicazione e alle relative librerie e dipendenze associate.

Invece di virtualizzare l'hardware sottostante, i container virtualizzano il sistema operativo (tipicamente Linux) in modo che ogni singolo container contenga solo l'applicazione e le relative librerie e dipendenze. L'assenza del sistema operativo guest è il motivo per cui i container sono così leggeri e, quindi, veloci e portatili.

Per un'analisi più approfondita di questo confronto, dai un'occhiata a "Containers vs. VMs: What's the difference?"

Benefici dei container

Il principale beneficio dei container, in particolare rispetto a una VM, è che offre un livello di astrazione che lo rende leggero e portatile. I benefici principali comprendono:

Leggerezza: i container condividono il kernel del sistema operativo della macchina, eliminando la necessità di un'istanza completa del sistema operativo per ogni applicazione e rendendo i file dei container piccoli e poco dispendiosi in termini di risorse. Le dimensioni ridotte, soprattutto rispetto alle VM, consentono ai container di avviarsi rapidamente e supportare meglio le applicazioni cloud-native con scalabilità orizzontale.

Portatili e indipendenti dalla piattaforma: i container si portano dietro tutte le dipendenze, e questo implica che il software può essere scritto una volta e quindi eseguito senza dover essere riconfigurato su laptop, cloud e ambienti di elaborazione on-premise.

Supporta lo sviluppo e l'architettura moderni: grazie a una combinazione di portabilità/coerenza di implementazione su più piattaforme e dimensioni ridotte, i container sono la soluzione ideale per lo sviluppo moderno e i modelli applicativi, come DevOpsserverless e microservizi, costruiti utilizzando distribuzioni regolari di codice in piccoli incrementi.

Migliora l'utilizzo: come prima le VM, i container consentono agli sviluppatori e agli operatori di migliorare l'utilizzo della CPU e della memoria delle macchine fisiche. Il punto in cui i container si spingono ancora oltre è che, poiché abilitano anche l'architettura dei microservizi, i componenti dell'applicazione possono essere distribuiti e scalati in modo più granulare. Si tratta di un'opzione alternativa interessante rispetto alla necessità di scalare un'intera applicazione monolitica perché un singolo componente ha difficoltà con il suo carico.

In un recente sondaggio IBM, sviluppatori e dirigenti IT hanno riscontrato molti altri benefici nell'utilizzo dei container.

Scarica il report completo: Containers in the enterprise

Casi d'uso per i container

I container stanno diventando sempre più importanti, specialmente negli ambienti cloud. Molte organizzazioni stanno addirittura prendendo in considerazione i container per sostituire le macchine virtuali come piattaforma di calcolo generica per le applicazioni e i workload. Ma all'interno di questo ampio ambito, ci sono casi d'uso chiave in cui i container sono particolarmente rilevanti.

  • Microservizi: i container sono piccoli e leggeri, l'ideale per le architetture di microservizi in cui le applicazioni sono costituite da molti servizi più piccoli, liberamente accoppiati e implementabili indipendentemente.
  • DevOps: la combinazione di microservizi come architettura e container as a platform rappresenta una base comune per molti team che hanno adottato il DevOps come modo di costruire, distribuire ed eseguire software.
  • Cloud ibrido e multicloud: poiché i container possono funzionare in modo coerente ovunque, su laptop, ambienti on-premise e cloud, sono un'architettura di base ideale per gli scenari di hybrid cloud e multicloud in cui le organizzazioni si trovano a operare su più cloud pubblici in combinazione con il proprio data center.
  • Modernizzazione e migrazione delle applicazioni: uno degli approcci più comuni alla modernizzazione delle applicazioni consiste nel containerizzare le applicazioni in preparazione della migrazione nel cloud.
Containerizzazione

Il software deve essere progettato e impacchettato in modo diverso per utilizzare al meglio i container, un processo comunemente denominato containerizzazione.

Quando si containerizza un'applicazione, il processo comprende l'impacchettamento di un'applicazione con le relative variabili d'ambiente, i file di configurazione, le librerie e le dipendenze software. Il risultato è un'immagine container che può essere eseguita su una piattaforma container.

Orchestrazione di container con Kubernetes

Quando le aziende hanno iniziato ad adottare i container, spesso come parte di moderne architetture cloud-native, la semplicità del singolo container ha iniziato a scontrarsi con la complessità della gestione di centinaia (o addirittura migliaia) di container in un sistema distribuito.

Per affrontare questa problematica, l'orchestrazione dei container si è configurata come la soluzione giusta per gestire grandi volumi di container durante l'intero ciclo di vita, tra cui:

  • Provisioning
  • Ridondanza
  • Monitoraggio dello stato di salute
  • assegnazione delle risorse
  • Scalabilità e bilanciamento del carico
  • Spostamento tra host fisici

Anche se sono state create molte piattaforme di orchestrazione dei container (come Apache Mesos, Nomad e Docker Swarm), Kubernetes, un progetto open source presentato da Google nel 2014, è diventato rapidamente la piattaforma di orchestrazione dei container più diffusa ed è quella su cui la maggior parte del settore ha basato la sua standardizzazione.

Kubernetes consente agli sviluppatori e agli operatori di dichiarare lo stato desiderato dell'ambiente complessivo dei container tramite file YAML, e quindi Kubernetes svolge tutto il lavoro di elaborazione per stabilire e mantenere tale stato, con attività che comprendono la distribuzione di un numero specifico di istanze di una determinata applicazione o workload, il riavvio dell'applicazione in caso di guasto, il bilanciamento del carico, l'auto-scaling, le distribuzioni senza tempi di inattività e altro ancora.

Kubernetes è ora gestito dalla Cloud Native Computing Foundation (CNCF), un gruppo industriale indipendente dal fornitore gestito sotto gli auspici della Linux Foundation.

Istio, Knative e l'ecosistema di container in espansione

Man mano che i container continuano a guadagnare terreno come metodo popolare per creare pacchetti ed eseguire applicazioni, l'ecosistema di strumenti e progetti ideati per accogliere ed espandere i casi d'uso di produzione continua a crescere. Oltre a Kubernetes, due dei progetti più popolari nell'ecosistema dei contenitori sono Istio e Knative.

istio

Poiché gli sviluppatori utilizzano i container per creare ed eseguire architetture di microservizi, i problemi di gestione vanno oltre le considerazioni relative al ciclo di vita dei singoli container e riguardano i modi in cui un gran numero di piccoli servizi, spesso definiti "service mesh", si connettono e si relazionano tra loro. Istio è stato creato per consentire agli sviluppatori di gestire più facilmente le problematiche associate a rilevamento, traffico, monitoraggio, sicurezza e altro ancora. 

Maggiori informazioni su Istio

knative

Anche le architetture serverless continuano a crescere in popolarità, in particolare all'interno della comunità cloud-native. Knative, ad esempio, offre un valore sostanziale nella sua capacità di implementare servizi containerizzati come funzioni serverless.

Invece di essere sempre in esecuzione e rispondere quando necessario (come fa un server), una funzione serverless può "scalare a zero", ovvero non entrare in esecuzione a meno che non venga chiamata. Questo modello può far risparmiare grandi quantità di potenza di calcolo se applicato a decine di migliaia di container.  

Soluzioni correlate
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud utilizza OpenShift in ambienti pubblici e ibridi per una maggiore velocità, reattività al mercato, scalabilità e affidabilità.

Scopri Red Hat OpenShift su IBM Cloud
IBM Cloud Pak for Applications

Che si tratti di implementazione, creazione di nuove applicazioni cloud-native, refactoring o replatforming di applicazioni esistenti, CP4Apps ha tutto ciò che serve.

Esplora IBM Cloud Pak for Applications
IBM cloud satellite

Con IBM Cloud Satellite puoi avviare servizi cloud coerenti ovunque, in ambienti on-premise, sull'edge e in ambienti di cloud pubblico.

Esplora IBM cloud satellite
IBM Cloud Code Engine

Esegui immagini di container, processi batch o codice sorgente come workload serverless, senza necessità di dimensionamento, implementazione, rete o scalabilità.

Esplora IBM cloud code engine
IBM Cloud Container Registry

IBM Cloud Container Registry offre un registro privato che ti consente di gestire le tue immagini e di monitorarle alla ricerca di problemi di sicurezza.

Esplora IBM Cloud Container Registry
Ottimizza Kubernetes con IBM Turbonomic

Determina automaticamente le corrette azioni di allocazione delle risorse e il momento giusto per effettuarle, al fine di garantire che gli ambienti Kubernetes e le applicazioni mission-critical ottengano esattamente quanto necessario per soddisfare gli SLO.

Esplora IBM Turbonomic
Risorse Containers in the enterprise

Una nuova ricerca IBM documenta il crescente slancio dell’adozione di container e Kubernetes.

Combina le migliori caratteristiche del cloud e dell'IT tradizionale

L'orchestrazione di contenitori è un componente chiave di una strategia di cloud ibrido aperto che consente di creare e gestire i carichi di lavoro ovunque ti trovi.

Cos'è Docker?

Docker è una piattaforma open source per la creazione, l'implementazione e la gestione di applicazioni containerizzate.

Fai il passo successivo

Red Hat OpenShift on IBM Cloud offre agli sviluppatori un modo rapido e sicuro per containerizzare e implementare i carichi di lavoro aziendali nei cluster Kubernetes. Delega attività noiose e ripetitive che coinvolgono la gestione della sicurezza, la gestione della conformità, la gestione dell'implementazione e la gestione continua del ciclo di vita.

Scopri Red Hat OpenShift su IBM Cloud Inizia gratuitamente