Le immagini container sono file statici immutabili che contengono codice eseguibile e operano in modo isolato sull'infrastruttura IT.
Un'immagine container assembla tutti i componenti necessari per creare un container su un sistema operativo e comprende diversi livelli di immagine impilati uno sopra l'altro. Le immagini container sono immutabili e condividono le stesse funzioni dei modelli.
Le immagini container sono memorizzate all'interno di un registro delle immagini container (o container registry) che funge da tipo di file system. I container registry sono repository di dati (o repository multipli) che immagazzinano le immagini container per lo storage e/o l'accesso.
Un notevole vantaggio dei container registry è la facilità con cui si connettono a sistemi/piattaforme di orchestrazione dei container, come Kubernetes e Docker. Inoltre, i container registry possono essere utilizzati in ambito DevOps durante lo sviluppo di applicazioni basate su container, ottimizzando l'integrazione del workflow.
Un'immagine container è un insieme di livelli che includono:
Nelle nuove immagini costruite da zero, tutto inizia con il livello inferiore, ovvero l'immagine di base. L'immagine di base è il punto di partenza della maggior parte dei workflow basati su container. Molte immagini di base comprendono distribuzioni Linux di base o minime (come Debian, Ubuntu, Red Hat Enterprise Linux (RHEL), Rocky Linux o Alpine). Le immagini di base sono il luogo in cui sono memorizzati i file del file system del container. Il processo di creazione di immagini di base (noto come "building") consente agli sviluppatori di costruire un ambiente standardizzato che supporta immagini container personalizzate.
Una serie di livelli di file system viene quindi aggiunta e sovrapposta all'immagine di base, tra cui:
Per le immagini container che incorporano immagini esistenti, l'immagine di base delle immagini esistenti è nota come immagine parent. Se un'immagine è completamente originale, non possiede un'immagine parent.
Le immagini container sono memorizzate nei container registry, dove le immagini container possono essere caricate nel registry (“pushing”) o scaricate in un sistema diverso (“pulling”).
I container registry utilizzano l'object storage per manifestare i metadati riguardanti le immagini container. Questa soluzione offre un modo per trasferire con successo questi metadati, tuttavia è limitata. Ad esempio, nel caso di dati che riguardano più immagini, il numero di tag di elenco disponibili è limitato.
I container delle dipendenze offrono un altro metodo di storage. Questi container consentono la gestione, registrazione e risoluzione delle dipendenze all'interno di un'applicazione. Le dipendenze descrivono situazioni in cui un oggetto o processo deve verificarsi prima che un altro oggetto possa funzionare come desiderato.
Considerando l'urgente necessità di sicurezza online, l'autenticazione delle persone a cui è concesso l'accesso ai repository è essenziale. L'autenticazione utilizza una serie di autorizzazioni specifiche per il container registry. Le autorizzazioni definiscono chi è autorizzato a utilizzare le risorse da un container registry.
Il concetto runtime è di vitale importanza. I runtime dei container sono software che consentono ai container di operare all'interno di un sistema host. I container runtime utilizzano una serie di passaggi per eseguire la creazione dei container. Questi passaggi comprendono l'intero processo di formazione dei container e di inizializzazione del loro ambiente, guidato da un'immagine container che contiene l'app e le sue dipendenze.
Ci sono due fornitori di soluzioni per l'orchestrazione dei container che sono centrali per l'uso di questi ultimi e delle immagini container:
Docker è un sistema di orchestrazione dei container che riduce la complessità di creazione, distribuzione ed esecuzione delle app. Docker è considerato un modo semplice per creare container leggeri e autonomi che possono essere eseguiti su qualsiasi piattaforma, nonostante la specifica infrastruttura. Poiché possono essere spostati da una macchina all'altra, i container Docker offrono anche la massima portabilità. Inoltre, Docker offre un mezzo standard per l'implementazione dei microservizi, consentendo all'utente di creare pacchetti di microservizi come immagini container.
La risorsa di immagini di Docker è DockerHub, che offre l'accesso gratuito a più di 100.000 immagini e altri file Docker condivisi da utenti Docker, fornitori di software e progetti open source. È disponibile anche, per uso privato, un servizio di container registry Docker a pagamento. Le immagini Docker utilizzano un'interfaccia a riga di comando Docker (Docker CLI) che consente di eseguire operazioni chiave come login, push and pull. Gli utenti creano immagini Docker con la caratteristiche Docker Build di Docker Engine e possono creare pacchetti e bundle del codice sorgente. Docker può essere configurato utilizzando i file di configurazione JavaScript Object Notation (JSON). JSON è il formato preferito, perché conserva tutte le configurazioni in un unico luogo.
Kubernetes è una piattaforma open source per l'orchestrazione dei container. Kubernetes è utilizzato per automatizzare numerosi processi software come la gestione, l'implementazione e il ridimensionamento. In un Kubernetes Service, uno o più computer (macchine virtuali o Bare Metal Server) sono collegati in un cluster, dove possono essere eseguiti workload di container di varie dimensioni e tipi. Il server Kubernetes application programming interface (API) configura i dati per oggetti API come pod, servizi, controller di replica ecc. Le API consentono a diverse app software di intercomunicare e condividere dati in piena collaborazione tra loro.
Sebbene Docker e Kubernetes forniscano servizi simili, differiscono nella portata. Docker è un container runtime, mentre Kubernetes è una piattaforma completa che ospita container da più runtime. Docker è solo uno dei container runtime supportati da Kubernetes.
Le immagini container sono un componente chiave dell'uso del container registry.
Le immagini container sono progettate e concepite per contenere tutto il necessario per il funzionamento di un container. Una volta create le immagini container, tutto ciò che serve per eseguire i container è la corretta richiesta da parte del sistema informatico. Questo rende le immagini container perfette per un'implementazione rapida.
Le priorità aziendali spesso cambiano da un giorno all'altro. Creando in anticipo le immagini container, un'organizzazione può prevedere tutte le sue potenziali esigenze a livello di container, quindi selezionare in un momento successivo i container più adatti a quel momento e a quello scopo. Le immagini container offrono alle organizzazioni la possibilità di cambiare rotta in base alle condizioni del momento.
La sicurezza delle immagini container è garantita dai controlli di accesso applicati dai container registry. Questi includono protocolli di autenticazione per garantire che alle persone non autorizzate sia negato l'accesso alle immagini container. La crittografia delle immagini viene solitamente utilizzata per codificare le immagini e proteggerle dalle vulnerabilità.
Le seguenti attività fanno ampio uso delle immagini container:
Le implementazioni basate su container (potenziate dall'uso di immagini container) supportano le architetture cloud-native e forniscono loro l'isolamento e la flessibilità necessari. I container e le immagini container consentono agli utenti di creare e ottimizzare app scalabili e cloud-native.
Molti container registry (e le immagini container al loro interno) aiutano gli utenti dei microservizi chiarendo il processo di localizzazione e connessione a un microservizio specifico all'interno di un cluster di container.
Le macchine virtuali (VM) sono sistemi informatici che utilizzano il software presente su un computer per imitare le funzioni di un altro computer. I ViM hanno una relazione unica con le immagini container. Gli utenti spesso sostituiscono le VM come sistema operativo host ai container, invece di eseguire i container direttamente sull'hardware, soprattutto quando i container devono essere eseguiti nel cloud.
Il mercato dei fornitori di immagini container è fluido e dinamico, con molta attività e numerosi provider di settore che entrano ed escono dal mercato. Questi fornitori vantano una solida reputazione in questo mercato:
Red Hat OpenShift on IBM Cloud è una OpenShift Container Platform (OCP) completamente gestita.
Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.
Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e partnership di esperti.