Cos'è un container Linux?

Copia URL

Un container Linux® è un insieme di uno o più processi isolati dal resto del sistema. Poiché tutti i file necessari per eseguire tali processi vengono forniti da un'immagine distinta, i container Linux sono portabili e coerenti in tutti gli ambienti, dallo sviluppo, ai test, fino alla produzione. Ciò li rende molto più veloci da utilizzare rispetto ai tradizionali flussi di sviluppo che dipendono dalla replica degli ambienti di test tradizionali. Integrando la sicurezza nella pipeline dei container e proteggendo l'infrastruttura, è possibile garantire la protezione, la scalabilità e l'affidabilità dei container. Diventa semplice anche spostare l'applicazione containerizzata tra ambienti di cloud pubblico, privato, ibrido, locali e i datacenter, mantenendo coerenti comportamento e funzionalità.

Prova i container Linux

Immagina di sviluppare un'applicazione. Stai lavorando su un portatile e il tuo ambiente presenta una configurazione specifica. Altri sviluppatori potrebbero avere configurazioni leggermente diverse. L'applicazione che stai sviluppando dipende da tale configurazione e da specifiche librerie, dipendenze e file. Allo stesso tempo, gli ambienti di sviluppo e produzione della tua azienda presentano le proprie configurazioni standardizzate con set di file di supporto specifici. Intendi emulare tali ambienti il più possibile a livello locale, ma senza i costi derivanti dalla creazione di nuovi ambienti server. I container rappresentano la modalità ideale per far funzionare l'app in questi ambienti, superare i controlli qualità e ottenere il deployment, senza dover riscrivere l'applicazione e rischiare lunghi ripristini di emergenza. 

I container contribuiscono a ridurre i conflitti fra team operativi e di sviluppo, separandone le aree di competenza, affinché possano concentrarsi, rispettivamente, sull'infrastruttura e sulle app. Poiché i container si basano sulla tecnologia open source, puoi usufruire di tutte le funzionalità più recenti e più utili a mano a mano che si rendono disponibili. Le tecnologie container, come Podman, SkopeoBuildahCRI-O, Kubernetes e Docker, consentono ai team IT di semplificare, accelerare la scalabilità e orchestrare lo sviluppo e il deployment delle applicazioni.

Risorse da Red Hat

Il progetto Linux Containers (LXC) è una piattaforma container open source in grado di fornire un set di associazioni tra strumenti, modelli, librerie e linguaggi. LXC ha un'interfaccia da riga di comando semplice, volta a migliorare l'esperienza utente nell'avviamento dei container.

LXC offre un ambiente di virtualizzazione a livello del sistema operativo installabile su più sistemi basati su Linux. Potrebbe essere disponibile nel repository del pacchetto della tua distribuzione Linux.

L'idea alla base di quella che ora chiamiamo tecnologia container è apparsa per la prima volta nel 2000 come jail FreeBSD, una tecnologia che consente la partizione di un sistema FreeBSD in più sottosistemi, denominati jail. I jail erano ambienti sicuri che un amministratore di sistema poteva condividere con altri utenti all'interno o all'esterno di un'organizzazione.

Nel 2001, all'interno di Linux è stato implementato per la prima volta un ambiente isolato, grazie al progetto VServer di Jacques Gélinas. È stata questa la base per la creazione di più spazi utente controllati in Linux, che ha infine permesso di dare vita agli attuali container Linux.

Successivamente sono state aggiunte altre tecnologie, che hanno trasformato questo approccio isolato in una realtà consolidata. I gruppi di controllo (cgroups) sono una funzionalità del kernel che controlla e limita l'utilizzo delle risorse da parte di un processo o di gruppi di processi. I cgroups utilizzano systemd, un sistema di inizializzazione che configura lo spazio utente e ne gestisce i processi, per aumentare il controllo di tali processi isolati. Oltre ad aumentare il controllo complessivo da parte di Linux, queste due tecnologie rappresentavano il framework con cui mantenere separati gli ambienti.

L’introduzione di Docker

Nel 2008 è entrato in scena Docker (tramite dotCloud) con la tecnologia container omonima. La tecnologia docker ha aggiunto nuovi concetti e strumenti: una semplice interfaccia da riga di comando per eseguire e creare nuove immagini stratificate, un daemon server, una libreria di immagini container predefinite e il concetto di server dei registri. Combinate, queste tecnologie consentivano agli utenti di creare velocemente nuovi container stratificati e condividerli facilmente con altri.

Per garantire l'interoperabilità delle tecnologie container sono stati definiti tre standard, ovvero le specifiche OCI Image, Distribution e Runtime . Insieme, queste specifiche consentono a progetti della community, prodotti commerciali e provider cloud di creare tecnologie container interoperabili, come quando esegui il push delle tue immagini personalizzate nel server dei registri di un provider di servizi cloud. Oggi Red Hat e Docker, insieme ad altri, sono membri dell'Open Container Initiative (OCI), una struttura di governance aperta che crea standard di settore open source per i formati dei container, le specifiche delle immagini e i runtime. 

Scopri di più sull'Open Container Initiative

I container condividono lo stesso kernel del sistema operativo e isolano l'applicazione dal resto del sistema, in modo che sia possibile eseguire la migrazione, aprire e utilizzare l'intero insieme all'interno delle configurazioni di sviluppo, test e produzione. Essendo leggeri e portabili, i container offrono la possibilità di uno sviluppo rapido per venire incontro alle esigenze aziendali quando necessario. L'orchestrazione dei container è la modalità di gestione dei deployment all'interno dell'azienda.

Kubernetes è una piattaforma open source con la quale automatizzare le operazioni dei container Linux. Consente di eliminare molti dei processi manuali necessari per il deployment e la scalabilità e il controllo dell’integrità delle applicazioni containerizzate. Consente inoltre di allocare le risorse in modo dinamico in base alla domanda, migliorando le prestazioni ed evitando l'overprovisioning. Kubernetes fornisce la piattaforma per la pianificazione e l’esecuzione dei container su cluster di macchine fisiche o virtuali. L'architettura Kubernetes suddivide un cluster in componenti che interagiscono per conservare lo stato definito del cluster. Red Hat® OpenShift® è un'offerta Kubernetes certificata dalla Cloud Native Computing Foundation (CNCF) che utilizza Kubernetes per offrire una piattaforma completa per la distribuzione coerente di applicazioni cloud native in diversi ambienti di cloud ibrido.

Scopri di più su come utilizzare Red Hat OpenShift come piattaforma applicativa moderna

La virtualizzazione è un processo che utilizza il software per creare un livello di astrazione che consente di suddividere gli elementi hardware dei computer, guidati da un hypervisor, in più computer virtuali. Le macchine virtuali (VM) sono ambienti in cui è possibile eseguire dei container, ma i container non sono vincolati agli ambienti virtuali. Poiché non richiedono un hypervisor, i container rappresentano una modalità di gestione della virtualizzazione che accelera il provisioning delle risorse e permette di rendere disponibili le nuove applicazioni più rapidamente. Alcuni software, come Red Hat® OpenShift® Virtualization, sono in grado di orchestrare i container e gestire le macchine virtuali, benché VM e container siano approcci complementari ma diversi.

  • La virtualizzazione consente di creare più ambienti simulati o risorse dedicate da un unico sistema hardware fisico.
  • I container condividono il kernel del sistema operativo e isolano i processi delle applicazioni dal resto del sistema. Ad esempio, i sistemi ARM Linux eseguono i container ARM Linux, i sistemi x86 Linux eseguono i container x86 Linux, i sistemi x86 Windows eseguono i container x86 Windows. I container Linux sono estremamente portabili, ma devono essere compatibili con il sistema alla base.

Le VM presentano capacità limitate, poiché gli hypervisor che le creano sono vincolati alle risorse di una macchina fisica. I container, invece, condividono lo stesso kernel del sistema operativo e raggruppano le applicazioni. Virtualizzano il sistema operativo al posto dell'hardware, in modo che i container e le VM funzionino in modo diverso nonostante abbiano capacità di allocazione e isolamento delle risorse simili. 

I container e le macchine virtuali possono anche essere utilizzati insieme nelle infrastrutture IT. Le applicazioni containerizzate e basate su VM possono essere eseguite sulla stessa infrastruttura negli ambienti ibridi, il che crea un approccio flessibile che si adatta alle diverse esigenze, un concetto noto come virtualizzazione container native. Le aziende possono utilizzare l'infrastruttura delle VM esistente per ospitare applicazioni containerizzate o eseguire la migrazione dei carichi di lavoro nei container in modo graduale, senza dover ristrutturare completamente l'intero ambiente IT. 

Scopri di più su Red Hat OpenShift Virtualization

Nulla è sicuro per impostazione predefinita. La sicurezza dei container è frutto dell’interazione di numerosi elementi: è necessario proteggere la pipeline e le applicazioni dei container, nonché gli ambienti di deployment e l'infrastruttura, ed è indispensabile disporre di un piano per integrare tali elementi con gli strumenti e i criteri di sicurezza aziendali. Poiché non è possibile estendere i criteri e le checklist di sicurezza ai container aziendali, è necessario integrare la sicurezza direttamente nella pipeline dei container.

Un approccio DevSecOps prevede l'integrazione di cultura, automazione e progettazione della piattaforma con la sicurezza, che viene considerata come una responsabilità condivisa tra i team. I criteri di sicurezza dei container devono prevedere l'isolamento e l'attendibilità dei percorsi di comunicazione e dei controlli degli accessi, oltre a utilizzare strumenti per la scansione del malware e la firma delle immagini per risolvere le potenziali vulnerabilità che emergono durante il funzionamento dei container. Adottando un approccio DevSecOps è possibile mantenere una sicurezza coerente durante l’intero ciclo di vita delle risorse IT.

Scopri di più sulla sicurezza dei container

Il serverless computing è un modello di sviluppo cloud native che consente agli sviluppatori di creare ed eseguire applicazioni senza gestire i server. Il termine "serverless" non significa "senza server", ma indica l’astrazione dei server dallo sviluppo applicativo. Un provider cloud gestisce le attività di routine quali il provisioning, la manutenzione e la scalabilità dell'infrastruttura server. 

Con l’approccio serverless, gli sviluppatori creano pacchetti di codice containerizzati per il deployment. Dopo il deployment le app serverless rispondono alle richieste e si adattano automaticamente in base alle diverse esigenze di scalabilità. L'utilizzo delle soluzioni serverless offerte dai provider di cloud pubblico viene solitamente misurato on demand tramite un modello di esecuzione basato su eventi, pertanto le funzioni serverless non costano nulla, quando non vengono utilizzate.

Scopri di più sui vantaggi di Red Hat OpenShift Serverless

Puoi distribuire i container per numerosi carichi di lavoro e scenari di utilizzo. I container forniscono la tecnologia necessaria per uno stile di sviluppo cloud native; potrai iniziare a utilizzare DevOps, CI/CD (integrazione e deployment continui) e poi passare al modello serverless.

Le applicazioni containerizzate possono funzionare su architetture cloud altamente distribuite. I runtime supportano un ambiente unificato per lo sviluppo, la distribuzione, l'integrazione e l'automazione delle applicazioni.

Distribuendo le tecnologie di integrazione nei container puoi rendere facilmente scalabile il modo in cui connetti app e dati, ad esempio con lo streaming di dati in tempo reale tramite Apache Kafka. Se stai creando un'architettura di microservizi, i container sono l'unità di deployment ideale per ogni microservizio e la rete di service mesh che li connette.

Red Hat vanta una lunga storia di collaborazione con la community open source finalizzata a rendere le tecnologie come i container sicure, stabili e affidabili. Red Hat è anche il secondo maggior contributore ai codici Docker e Kubernetes e collabora con OCI e Cloud Native Computing Foundation per migliorare le funzionalità, l'affidabilità e la sicurezza dei container. Nel rispetto dei principi dell'open source, Red Hat collabora ai progetti upstream migliorando il codice e promuovendo i risultati attraverso la condivisione.

Le soluzioni di formazione e le soluzioni incentrate sui container di Red Hat forniscono l'infrastruttura, la piattaforma, il controllo e le conoscenze necessarie per sfruttare tutti i vantaggi che i container possono offrire. Red Hat ha la soluzione giusta per ogni esigenza: puoi chiederci di collaborare con i tuoi team di sviluppatori alla creazione di una piattaforma pensata per i container, eseguire la tua infrastruttura di container su uno dei migliori sistemi operativi o ottenere soluzioni di storage in grado di gestire gli elevati volumi di dati generati dai container.

Red Hat OpenShift offre un approccio scalabile alla sicurezza e all'affidabilità per i container e le applicazioni critiche. Con il suo set completo di strumenti e servizi, Red Hat OpenShift semplifica l'intero ciclo di vita dello sviluppo dell'applicazione, dalla creazione alla distribuzione fino all'esecuzione e alla gestione. Riduce le complessità legate alla modernizzazione e alla migrazione delle applicazioni, come la creazione e il rinnovamento con IA su ambienti ibridi e multicloud, per garantire più efficienza e produttività ai team di sviluppo e operativi IT. 

Red Hat Enterprise Linux offre una base affidabile per le fasi successive del percorso IT, dalla migrazione al cloud all’utilizzo delle potenzialità dell'edge e dei container, fino alla sperimentazione con i carichi di lavoro IA. Gli sviluppatori possono accedere a strumenti per container, database, linguaggi di programmazione e runtime per semplificare lo sviluppo delle applicazioni e ottenere un'esperienza coerente in tutti gli ambienti. Gli strumenti per i container permettono di ridurre la complessità e ottenere più portabilità e standardizzazione, assemblando al contempo immagini del sistema operativo Red Hat Enterprise Linux personalizzate e consolidate.

La modalità immagine per Red Hat Enterprise Linux offre un approccio semplice e coerente per progettare, distribuire e gestire il sistema operativo utilizzando i container. Gestisci il sistema operativo con gli stessi strumenti e flussi di lavoro basati su container che utilizzi per le applicazioni, generando un'esperienza coerente e più collaborativa per tutti i team. La modalità immagine mantiene le configurazioni dei server coerenti ed evita disallineamenti che potrebbero causare instabilità nel sistema e rischi per la sicurezza. Contribuisce inoltre a migliorare la sicurezza riducendo la superficie di attacco con immagini di sistema immutabili, che permettono di conoscere il contenuto esatto di ogni immagine. 

Hub

Il blog ufficiale di Red Hat

Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.

Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.

Continua a leggere

Microservices: i vantaggi di Red Hat OpenShift Serverless

Red Hat OpenShift Serverless estende Kubernetes per l'implementazione e la gestione di carichi di lavoro per il serverless computing.

Container e VM

I container Linux e le macchine virtuali (VM) sono entrambi pacchetti di ambienti di elaborazione che combinano vari componenti IT e li isolano dal resto del sistema.

Cos'è il Kubernetes Java Client?

Il Kubernetes Java Client è una libreria client che permette di utilizzare il linguaggio di programmazione Java per interfacciarsi con Kubernetes.

Container: risorse consigliate

Articoli correlati