Cos'è un'immagine container?

Uomo d'affari seduto su una panchina fuori da un palazzo di uffici che utilizza il laptop

Autori

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è un'immagine container?

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.

Veduta aerea di uno snodo di autostrade

Rimani con la testa nel cloud 


Ricevi la newsletter settimanale Think per una guida esperta sull'ottimizzazione delle impostazioni multicloud nell'era dell'AI.

Come vengono create le immagini container?

Un'immagine container è un insieme di livelli che includono:

  • Immagine di base
  • Librerie
  • Binari
  • Dipendenze
  • File di configurazione

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:

  • Librerie obbligatorie, ovvero insiemi standard di algoritmi e modelli di classe che i programmatori possono utilizzare per creare strutture di dati comuni (ad esempio elenchi, stack e code)
  • Binari necessari, ovvero file eseguibili necessari per l'implementazione di diversi programmi e comandi. Le cartelle binarie sono progettate in modo che gli utenti possano accedere rapidamente agli eseguibili necessari.
  • Diverse dipendenze che regolano la creazione e il funzionamento dei container.
  • File di configurazione (config) necessari per eseguire il container in questione.

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.

AI Academy

Prepararsi all'AI con l'hybrid cloud

Condotto dai migliori leader di pensiero di IBM, il programma di studi è stato progettato per aiutare i dirigenti aziendali ad acquisire le conoscenze necessarie per dare priorità agli investimenti in AI che possono favorire la crescita.

Come funzionano le immagini container?

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”).

Storage a oggetti

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.

Container delle dipendenze

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.

Autenticazione

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.

Container runtime

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.

Docker e Kubernetes

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

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

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.

Benefici delle immagini container

Le immagini container sono un componente chiave dell'uso del container registry.

Implementazione rapida

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.

Sempre pronte

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.

Utilizzo sicuro

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à.

Casi d'uso delle immagini container

Le seguenti attività fanno ampio uso delle immagini container:

Applicazioni cloud-native

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.

Microservizi

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.

Macchine virtuali

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.

Fornitori leader di immagini container

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:

  • Amazon: Amazon Web Services (AWS) offre l'Amazon Elastic container registry (ECR), che incorpora l'uso di Amazon Inspector per gestire la scansione delle vulnerabilità delle immagini container. L'ECR supporta inoltre la replica multi-account e cross-regional, semplificando l'accesso alle immagini.
  • Apache: Apache è un software open source per server web disponibile gratuitamente e offerto dalla Apache Software Foundation, che stima che il software Apache sia in esecuzione su circa il 30% di tutti i server web esistenti.
  • GitHub: la piattaforma GitHub (ora di proprietà di Microsoft) ha ottenuto un ampio supporto da parte degli sviluppatori, che apprezzano il modo in cui questo software proprietario consente la condivisione e gestione del codice, così come le iniziative di collaborazione.
  • IBM: IBM Cloud Container Registry consente agli utenti di avviare facilmente il proprio registro e iniziare a inviare immagini private al registro per l'utilizzo con IBM Cloud Kubernetes Service. Gli utenti traggono beneficio dalla privacy di possedere un proprio registro completamente gestito. Il servizio, che può essere testato gratuitamente, offre tariffe pay-as-you-go, consentendo agli utenti di pagare solo per ciò che consumano.
  • Microsoft: la piattaforma Azure di Microsoft utilizza l'Azure Container Registry (ACR), che contiene immagini Docker e immagini Open Container Initiative (OCI), oltre a supportare gli artefatti OCI. La caratteristica di registro connesso di ACR (parte del livello di servizio premium del programma) crea una replica on-premise o remota che sincronizza le immagini container e gli artefatti OCI con l'ACR basato su cloud, che può contenere immagini Windows e Linux. Un metodo di interazione con i programmi per computer prevede la scrittura e l'input di righe di testo, note anche come righe di comando. I sistemi operativi che utilizzano questo metodo di interazione incorporano un'interfaccia della riga di comando (CLI). La maggior parte degli utenti di computer ora si affida alle interfacce utente grafiche (GUI), sebbene le CLI siano ancora preferite da chi scrive script nell'ambito delle iniziative di automazione. Azure offre agli utenti la flessibilità di usare Docker CLI per eseguire operazioni chiave sulle immagini container.
  • Python: Python è un linguaggio di programmazione interpretato, orientato agli oggetti e di alto livello offerto dalla Python Software Foundation. Le sue strutture dati integrate rendono Python perfetto per i workload che richiedono un rapido sviluppo delle applicazioni. Il principale vantaggio di Python per i programmatori di software è la facilità d'uso, in gran parte dovuta alla mancanza di una fase di compilazione. Ciò consente ai programmatori di utilizzare un ciclo di debug accelerato, con conseguenti risparmi di tempo.
  • Red Hat: Red Hat ha supportato la programmazione basata su Linux sin dalla nascita dell'azienda, nel 1993. OpenShift Container Platform (OCP), il container registry offerto da Red Hat, consente agli utenti di accedere automaticamente ai repository di immagini on-demand e offre inoltre un punto standard in cui inviare le immagini risultanti dalle build delle applicazioni.
Soluzioni correlate
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud è una OpenShift Container Platform (OCP) completamente gestita.

Esplora Red Hat OpenShift
Soluzioni container

Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.

Esplora i container
Servizi di consulenza cloud 

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.

Servizi cloud
Fai il passo successivo

Modernizza la tua infrastruttura con le soluzioni container di IBM. Esegui, scala e gestisci i workload basati su container in tutti gli ambienti con flessibilità, sicurezza ed efficienza utilizzando la piattaforma container completa di IBM.

Esplora le soluzioni container Crea un account IBM Cloud gratuito