Un container registry è un repository di dati (o più repository) che archivia le immagini container per lo storage e gli accessi. Le immagini container sono file statici immutabili che contengono codice eseguibile e vengono eseguiti in modo isolato sull'infrastruttura IT.
Un vantaggio chiave dei container registry è il modo in cui si connettono facilmente a sistemi o piattaforme di orchestrazione dei container, come Kubernetes e Docker.
Durante lo sviluppo di applicazioni basate su container, i team possono anche utilizzare i container registry in modalità DevOps, consentendo un'integrazione ottimizzata con i workflow di integrazione continua (CI) e di distribuzione continua (CD). Entrambi i workflow sono attività fondamentali nello sviluppo del software. I workflow CI e CD sono entrambi basati sull'automazione e creati per adattarsi a frequenti modifiche del codice. Differiscono in quanto CI prepara il codice per l'eventuale rilascio, mentre CD riguarda il rilascio effettivo del codice. I container registry supportano entrambi i workflow.
Esistono due tipi di container registry:
Un container registry memorizza le immagini container, consentendo agli utenti di caricare immagini nel container registry (un processo chiamato "pushing") o scaricarle su un sistema diverso (un processo chiamato "pulling").
Un container registry può essere utilizzato da solo o insieme ad altri container registry. Se più container vengono combinati in un'unica unità operativa per la fornitura di servizi cloud, la sua funzionalità imita un ecosistema i cui abitanti lavorano in stretta collaborazione per fornire un output condiviso.
I container registry utilizzano l'object storage per manifestare i metadati riguardanti le immagini container. Sebbene ciò fornisca un mezzo per trasferire con successo tali metadati è, per sua natura, limitato. Ad esempio, nel caso di dati che potrebbero coinvolgere diverse immagini, ci sono dei limiti al numero di tag di elencazione disponibili.
Un altro metodo di storage sono i container delle dipendenze. Consentono la gestione, la registrazione e la risoluzione delle dipendenze in un'applicazione. Nel contesto della programmazione, le dipendenze descrivono situazioni in cui un oggetto o un processo devono verificarsi prima che un altro oggetto possa funzionare come desiderato.
Tali dipendenze sono gestite da container delle dipendenze, che aiutano a semplificare i test, migliorare la scalabilità e ridurre al minimo la necessità di accoppiamento del codice (un'interdipendenza troppo forte tra gli oggetti programmati), il che può portare all'introduzione di errori e problemi di controllo delle versioni.
Data la pressante e continua necessità di sicurezza online, l'autenticazione delle persone a cui è concesso l'accesso agli archivi è di vitale importanza. Questo dipende da una serie di autorizzazioni specifiche per quel container registry. Le autorizzazioni definiscono chi è autorizzato a utilizzare le risorse di quel container registry.
Il concetto di runtime è fondamentale. Il container runtime è il software che consente ai container di funzionare all'interno di un sistema host. I runtime utilizzano una serie di passaggi per creare i container. Questi passaggi comprendono l'intero processo di formazione dei container e di inizializzazione del loro ambiente secondo la guida di un'immagine container che contiene l'app e le sue dipendenze.
Dopo la formazione dei container, il runtime rimane coinvolto attivamente: amministra i cicli di vita dei container, monitora la loro fruibilità continua e rimuove le loro risorse quando non sono più necessarie.
I container registry supportano anche il bilanciamento del carico. Nel bilanciamento del carico nativo dei container, il traffico del sistema di bilanciamento viene indirizzato direttamente alle aree destinate a ricevere quel traffico. In questo modo, container registry funzionano di pari passo con i sistemi di bilanciamento del carico, eliminando la necessità di indirizzare il traffico attraverso un loop di rete aggiuntivo.
I container registry offrono numerosi benefici, tra cui:
I container registry garantiscono una maggiore chiarezza operativa poiché dispongono di un luogo dedicato in cui conservare le immagini per lo storage a lungo termine. I production artist e gli sviluppatori di software spesso hanno difficoltà a gestire il sovraccarico di asset. I container registry alleviano questo problema confinando gli asset in un'unica sede.
I container registry aiutano a prevenire i ritardi delle prestazioni che potrebbero verificarsi quando la posizione esatta delle immagini non è nota, specialmente durante i periodi di alta priorità. I container registry risolvono questo problema fornendo un inventario che può essere controllato e confermato in qualsiasi momento.
I registri creano un'unica fonte di verità per qualsiasi componente o applicazione, in modo che ci sia sempre trasparenza sulla composizione di quel componente o applicazione. L'uso dei container registry assicura che l'ultima iterazione sia pronta per l'uso o la replica, per un controllo ottimale delle versioni.
I container registry offrono caratteristiche di sicurezza avanzate per le immagini. I protocolli di accesso aiutano a proteggere le immagini dal punto di vista della sicurezza. Nel frattempo, la scansione delle vulnerabilità consente agli utenti di osservare in profondità le proprie immagini e di individuare i problemi nascosti.
Le seguenti attività fanno ampio uso dei container registry:
Lo sviluppo software è il caso d'uso principale dei container registry, nonché il motivo per cui sono stati creati in primo luogo, ovvero per aiutare gli sviluppatori software dando loro uno spazio di lavoro per archiviare, accedere e condividere immagini.
I container registry privati sono in genere considerati un'infrastruttura necessaria per le organizzazioni che progettano e distribuiscono applicazioni software internamente. I registri privati offrono agli utenti un livello più elevato di controllo sulle supply chain del software.
Molti container registry aiutano gli utenti di microservizi chiarendo il processo di localizzazione e connessione a microservizi specifici in un cluster di container. Tali registri offrono servizi di Domain Name System che assegnano nomi di immagini e IP virtuali.
I container registry favoriscono la rapida iterazione delle app grazie alla loro natura modulare e leggera. Altri benefici dell'implementazione sono la portabilità e l'uniformità dei registri.
I container registry vengono personalizzati per scopi scientifici specializzati, come supportare i dati genetici e potenziare la ricerca genomica. I risultati della ricerca possono essere facilmente riprodotti in altri formati, consentendo la condivisione di codice e artefatti d'importanza chiave.
Sono due i principali fornitori di orchestrazione dei container che dominano l'uso dei container registry:
Docker è un sistema di orchestrazione dei container sviluppato e introdotto nel 2013 per contribuire a ridurre la complessità della creazione, distribuzione ed esecuzione delle app. Docker è diventato popolare di recente per essere considerato un modo semplice per creare container leggeri, portatili e autonomi, in grado di funzionare su qualsiasi piattaforma nonostante l'infrastruttura. Questa reputazione di facilità d'uso ha aiutato Docker a diventare un'opzione ideale per chi implementa applicazioni dedicate all'intelligenza artificiale (AI) e al machine learning (ML).
I container Docker offrono inoltre la massima portabilità e possono essere spostati da una macchina all'altra, indipendentemente dall'infrastruttura. Questo è un altro beneficio di Docker, poiché è relativamente semplice introdurre app di AI e ML in ambienti alternativi, come macchine locali, dispositivi edge o server cloud.
Kubernetes è una piattaforma open source per l'orchestrazione dei container. Nato nel 2013 e chiamato con un termine greco per "pilota", Kubernetes è utilizzato per automatizzare vari processi software come la gestione, l'implementazione e la scalabilità.
In un Kubernetes Service, uno o più computer (che possono essere macchine virtuali o bare metal server) sono collegati in un cluster, dove possono essere eseguiti workload di container di varie dimensioni e tipi. Kubernetes viene spesso implementato con i grafici Helm, che sono raccolte di file che lavorano per descrivere le varie risorse di un cluster Kubernetes e quindi confezionare queste risorse combinate, sotto forma di app.
Kubernetes semplifica l'uso di app di ML in container, così come la scalabilità, e supporta framework e strumenti di ML. Kubernetes può essere utilizzato anche come piattaforma per i workload di addestramento dell'AI.
Docker e Kubernetes sono simili sotto molti aspetti, tuttavia differiscono nella portata di ognuno, poiché Docker è, fondamentalmente, un container runtime, mentre Kubernetes è una piattaforma completa progettata per consentire l'esecuzione e la gestione di container da più container runtime. Per capire la differenza tra i due, si può pensare che Kubernetes è abbastanza grande da consentire a Docker di essere solo uno dei diversi container supportati da Kubernetes.
Il mercato dei fornitori di container registry è in continua evoluzione e le aziende entrano ed escono costantemente dal mercato. Tuttavia, i fornitori qui elencati si sono costruiti 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.