Cos'è un container registry?

Vista aerea di Tokyo

Autori

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è un container registry?

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:

  • I registri pubblici offrono modi per ottimizzare il trasferimento dei dati e il controllo degli accessi rilassato, tuttavia mancano di protocolli di sicurezza avanzati.
  • I repository privati sono tipicamente utilizzati in situazioni che richiedono operazioni più sicure e una più rigorosa protezione del workload.
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 funzionano i 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.

Storage a oggetti

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.

Container delle dipendenze

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.

Autenticazione

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.

Container runtime

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.

Bilanciamento del carico

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.

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.

Benefici dei container registry

I container registry offrono numerosi benefici, tra cui:

Chiarezza operativa

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.

Prestazioni ottimali

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.

Singola fonte affidabile

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.

Maggiore sicurezza

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.

Casi d'uso dei container registry

Le seguenti attività fanno ampio uso dei container registry:

sviluppo di software

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.

Distribuzione del software enterprise

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.

Microservizi

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.

Implementazione delle applicazioni

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.

Ricerca scientifica

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.

Docker e Kubernetes

Sono due i principali fornitori di orchestrazione dei container che dominano l'uso dei container registry:

Docker

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

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.

Altri fornitori leader di container registry

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:

  • Alibaba: l'obiettivo di Alibaba Group è "rendere più facile fare affari ovunque". Il Cloud Container Registry di Alibaba consente la replica di immagini tra istanze (entità operative) che appartengono allo stesso account. L'Alibaba Cloud Container Registry è progettato per gestire le immagini durante tutto il loro ciclo di vita.
  • Amazon: Amazon Web Services (AWS) gestisce l'Amazon Elastic container registry (ECR),che incorpora l'uso di Amazon Inspector per gestire la scansione delle vulnerabilità delle immagini. L'ECR supporta inoltre la replica multi-account e cross-regional, semplificando l'accesso alle immagini.
  • DockerHub: Docker gestisce una propria risorsa di immagini nota come DockerHub, che offre accesso gratuito a più di 100.000 immagini condivise da utenti Docker, fornitori di software e progetti open source. È disponibile anche, per uso privato, un servizio di container registry Docker a pagamento. DockerHub utilizza un'interfaccia a riga di comando Docker (Docker CLI) che consente di eseguire operazioni chiave come login, push and pull.
  • GitHub: ora di proprietà di Microsoft, GitHub è stato lanciato nel 2007. La piattaforma ha ottenuto un ampio supporto da parte degli sviluppatori, che ne apprezzano la capacità di promuovere la condivisione e gestione del codice, così come la collaborazione. (Nota: sebbene spesso scambiato per un software open source, GitHub è in realtà un software proprietario).
  • GitLab: spesso confuso con GitHub, GitLab è nato nel 2014. Il GitLab Container Registry è un registro privato sicuro per le immagini container. Può essere utilizzato sia per produrre che per pubblicare immagini. Il Gitlab Container Registry funziona con software open source. L'ultima versione (ora in versione Beta) offre funzionalità avanzate di ordinamento e filtro.
  • Google: il container registry di Google Cloud "Artifact Registry" è integrato con gli strumenti e i runtime di Google Cloud e supporta l'uso di pipeline automatizzate. Google è stato anche il creatore di Kubernetes. Il progetto è ora gestito grazie agli sforzi dei collaboratori e il marchio appartiene alla Cloud Native Computing Foundation. I provider di cloud pubblico offrono ora la propria versione di Kubernetes come servizio gestito.
  • IBM: IBM Cloud Container Registry consente agli utenti di avviare facilmente il proprio registro e iniziare a inviargli immagini private 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 include l'Azure Container Registry (ACR), che contiene immagini Docker e immagini OCI (Open Container Initiative) e supporta gli artefatti OCI e i grafici Helm. La funzionalità di registro connesso di ACR (incluso nel 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. Gli ACR possono ospitare immagini Windows e Linux. Un modo per interagire con i programmi per computer è quello di scrivere e immettere righe di testo, chiamate righe di comando. Quando un sistema operativo utilizza questo metodo di interazione, si dice che incorpora un'interfaccia a riga di comando (CLI). Sebbene la maggior parte degli utenti di computer si affidi ora alle interfacce utente grafiche (GUI), l'uso dell'interfaccia a riga di comando è ancora preferito da alcuni, in particolare da coloro che desiderano automatizzare i programmi scrivendo script. Azure offre agli utenti la flessibilità di utilizzare la popolare Docker CLI per eseguire le operazioni chiave delle immagini container, come login, push e pull.
  • Red Hat: Red Hat promuove la programmazione basata su Linux fin dalla sua fondazione nel 1993. Il suo container registry, OpenShift Container Platform (OCP), consente agli utenti di accedere automaticamente agli archivi di immagini su richiesta e offre loro una posizione 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