Panoramica
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. Questo li rende molto più veloci da utilizzare, rispetto ai tradizionali flussi di sviluppo che dipendono dalla replica degli ambienti di test tradizionali. I container, oltre a godere di una grandissima popolarità e ad essere apprezzati per la loro facilità d'uso, hanno un ruolo importante nella sicurezza IT.
Webinar in italiano
Modern Application: come fare, dai container al DevOps
In periodi difficili come quello che stiamo vivendo, le aziende si trovano ad affrontare il passaggio a un modello basato su cloud e container. Scopri come sostenere il cambiamento culturale e la collaborazione tra i team.
Perché scegliere i container Linux
Immagina di sviluppare un'applicazione. Lavori su un portatile e il tuo ambiente presenta una configurazione specifica. Altri sviluppatori potrebbero utilizzare configurazioni leggermente diverse. L'applicazione che stai sviluppando dipende da tale configurazione, oltre che da specifiche librerie, dipendenze e file. Al tempo stesso, gli ambienti di sviluppo e produzione della tua azienda presentano le proprie configurazioni standardizzate con set di file di supporto specifici. Desideri emulare tali ambienti il più possibile localmente, ma senza tutti i costi derivanti dalla creazione di nuovi ambienti server. A questo punto, è necessario trovare un modo semplice per far funzionare la tua app in questi ambienti, superare i controlli qualità e ottenere il deployment, senza dover riscrivere l'applicazione e correggere eventuali errori. In questo caso, i container sono la soluzione ideale.
Il container che ospita la tua applicazione presenta le librerie, le dipendenze e i file necessari, cosa che ti consente di passare all'ambiente di produzione senza alcun impatto negativo. Infatti il contenuto di un'immagine container, creato con uno strumento open source come Buildah, può essere paragonato all'installazione di una distribuzione Linux, poiché include pacchetti RPM, file di configurazione e così via. La distribuzione di un'immagine container è, tuttavia, molto più semplice dell'installazione di nuove copie dei sistemi operativi. I container consentono di prevenire i problemi.
Questo semplice esempio dimostra come i container Linux possano risolvere problemi di diverso tipo, in presenza di processi che richiedono il massimo della portabilità, della configurabilità e dell'isolamento. L'obiettivo dei container Linux è soddisfare le esigenze aziendali a mano a mano che si presentano attraverso uno sviluppo più efficiente. In alcuni casi, come nel flusso di dati in tempo reale di Apache Kafka, i container sono fondamentali e rappresentano l'unico modo per assicurare la scalabilità necessaria all'applicazione. Indipendentemente dall'infrastruttura (on premise, cloud o ibrida), i container rispondono alle tue esigenze. Scegliere la piattaforma per container ideale è importante tanto quanto i container stessi.
Red Hat® OpenShift® offre tutto ciò che serve per il cloud ibrido, per i container enterprise e per lo sviluppo e il deployment Kubernetes.
Webinar in italiano
Verso un modello cloud native: il container oltre la virtualizzazione
Adottare approcci e tecnologie agili consente di semplificare la transizione a modelli cloud native e approcci DevOps. Scopri come sostenere la trasformazione digitale e con quali strumenti riprogettare le applicazioni.
Che differenza c'è tra container e virtualizzazione?
Non si tratta, quindi, di virtualizzazione? Non esattamente. Questi due approcci possono essere considerati complementari, ma esistono alcune differenze. In sintesi:
- La virtualizzazione consente di eseguire più sistemi operativi (Windows o Linux) contemporaneamente su un singolo sistema hardware.
- I container condividono lo stesso kernel del sistema operativo e isolano i processi applicativi dal resto del sistema. Ad esempio, i sistemi ARM Linux eseguono container ARM Linux, i sistemi x86 Linux eseguono container x86 Linux, i sistemi x86 Windows eseguono container x86 Windows. I container Linux offrono una notevole portabilità, ma devono essere compatibili con il sistema alla base.
Cosa significa? Innanzitutto, la virtualizzazione utilizza un hypervisor per emulare l'hardware che consente di eseguire più sistemi operativi in modalità affiancata, procedura non ottimale come l'uso dei container. Disponendo di risorse ridotte con capacità limitate, sono necessarie app leggere che possano essere distribuite su larga scala. I container Linux vengono eseguiti in modo nativo nel sistema operativo, condiviso tra tutti i container, pertanto app e servizi rimangono leggeri e vengono eseguiti velocemente in parallelo.
I container Linux rappresentano un passo avanti nella modalità di sviluppo, deployment e gestione delle applicazioni. Le immagini dei container Linux garantiscono portabilità e controllo delle versioni, per assicurare che i componenti funzionanti sul laptop dello sviluppatore funzioneranno anche nell'ambiente di produzione. La golden image, letteralmente "immagine dorata", è un tipo speciale di immagine dei container che crea una base solida e coerente per la configurazione del sistema. Rispetto alle macchine virtuali, un container Linux in esecuzione utilizza le risorse in modo meno intensivo, presenta un'interfaccia standard (avvio, arresto, variabili di ambiente e così via), garantisce l'isolamento delle applicazioni ed è più facile da gestire nell'ambito di un'applicazione più ampia (più container). Inoltre, queste applicazioni con più container possono essere orchestrate fra più cloud.
Esistono persino strumenti che combinano l'orchestrazione dei container e la gestione delle macchine virtuali. Scopri di più al riguardo in questa registrazione del Red Hat Summit 2020, che include una sessione interattiva su uno strumento di questo tipo.
Cos'è il progetto Linux container (LXC)?
Il progetto Linux Containers (LXC) è una piattaforma open source per container 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.
Breve storia dei container
L'idea alla base di quella che ora chiamiamo tecnologia container, nota come jail FreeBSD è apparsa per la prima volta nel 2000. Tale tecnologia consente la partizione di un sistema FreeBSD in svariati sottosistemi, denominati jail. I jail erano ambienti sicuri, che gli amministratori di sistemi potevano 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, tramite il progetto VServer di Jacques Gélinas. Una volta gettate le basi per la creazione di più spazi utente controllati in Linux, sono stati gradualmente aggiunti ulteriori componenti che hanno permesso di dare vita agli attuali container Linux.
Ben presto, sono state aggiunte altre tecnologie, al fine di trasformare questo approccio isolato in una realtà consolidata. I gruppi di controllo (cgroups) sono una caratteristica del kernel che consente di controllare e limitare l'utilizzo delle risorse da parte di un processo o gruppo 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 molti 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 registro di sistema. Tutte insieme, 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: se esegui il push delle tue immagini personalizzate nel registro di sistema di un provider di servizi cloud, hai bisogno che funzionino. Oggi Red Hat e Docker, insieme a molti altri, sono membri della Open Container Initiative (OCI) e stanno definendo standard settoriali aperti per le tecnologie container.
Scopri di più sulla sicurezza dei container
I container sono molto diffusi, ma sono sicuri? I container devono garantire invulnerabilità a svariati componenti mobili. Occorre proteggere il flusso e l'applicazione container, l'infrastruttura e gli ambienti di deployment, e al contempo pianificare l'integrazione con i criteri e gli strumenti per la sicurezza a livello enterprise. Sfrutta soluzioni sicure. Contatta Red Hat
Perché scegliere Red Hat per i container Linux?
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. Garantire sicurezza è essenziale, così come supportare queste tecnologie. In questo, siamo al tuo fianco.
I container Red Hat sono una soluzione affidabile e comprovata. 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.