Come funziona Docker Repository

Se hai approfondito Docker, avrai sentito i termini Docker repository e Docker registry e potresti esserti chiesto cosa significhino. In questa guida spieghiamo la differenza tra i due e come utilizzarli in modo efficace.

Un repository Docker è una raccolta di immagini Docker correlate che condividono lo stesso nome ma hanno versioni diverse, identificate da tag. Ad esempio, il repository ufficiale nginx contiene immagini taggate nginx:1.27, nginx:latest, nginx:alpine e così via — tutte versioni o varianti diverse dello stesso software.

Un registry Docker, invece, è il servizio che ospita e gestisce i repository. Pensa al registry come al server e al repository come a una cartella al suo interno.

Ogni volta che lo sviluppatore rilascia una nuova versione, crea una nuova immagine Docker con lo stesso nome ma un tag diverso e la pubblica nello stesso repository nel registry.

Per assegnare un tag di versione a un’immagine Docker al momento della build, utilizza il flag -t:

$ docker build -t my-app:1.0.0 .

In alternativa, puoi taggare un’immagine esistente utilizzando il comando docker tag:

$ docker tag <image_name> <image_name>:<tag>

A cosa serve un Docker repository?

Un repository fornisce il controllo di versione per le immagini container. Ogni tag rappresenta una versione specifica, consentendo a te e al tuo team di scaricare esattamente la versione necessaria.

I repository possono essere ospitati su un registry remoto per rendere le immagini della tua applicazione disponibili ad altri utenti e ambienti. Gli utenti con le autorizzazioni appropriate possono scaricare una copia di qualsiasi immagine dal repository utilizzando il comando docker pull:

$ docker pull <registry>/<repository>:<tag>

Repository pubblici e privati

I repository possono essere pubblici o privati. I repository pubblici sono accessibili a chiunque senza autenticazione. Su Docker Hub sono disponibili migliaia di repository pubblici, incluse le immagini ufficiali per software popolari come Nginx, PostgreSQL, Redis e Node.js.

Per creare un repository privato, è necessario aprire un account presso un provider di registry e configurare l’accesso per i propri collaboratori. I registry più comunemente utilizzati includono:

Autenticazione a un registry

Ogni registry ha il proprio sistema di autenticazione. Il metodo standard è il comando docker login.

Per Docker Hub, il metodo di autenticazione predefinito è ora un flusso basato su codice dispositivo via web, che evita di esporre le credenziali nel terminale:

$ docker login

Verrà visualizzato un codice monouso e un URL. Apri l’URL nel browser, inserisci il codice e autorizza l’accesso.

Per altri registry o per ambienti non interattivi (come le pipeline CI/CD), utilizza --password-stdin per passare le credenziali in modo sicuro:

$ echo $REGISTRY_TOKEN | docker login -u <username> --password-stdin registry.example.com

Nota: evita di passare le password direttamente come argomenti della riga di comando (ad es. docker login -p <password>), poiché questo le espone nella cronologia della shell e nei log di sistema.

Una volta autenticato, puoi scaricare e pubblicare immagini su qualsiasi repository a cui hai accesso.

Limiti di frequenza di Docker Hub

Se scarichi immagini da Docker Hub senza autenticarti, le tue richieste sono soggette a limiti di frequenza: 10 pull all’ora per utenti non autenticati e 100 pull all’ora per account gratuiti autenticati. Tutti i piani a pagamento (Pro, Team, Business) includono pull illimitati. Per ambienti di produzione con più nodi, è raccomandato autenticarsi su Docker Hub o utilizzare un mirror del registry per evitare di raggiungere questi limiti. 

Risorse utili

Ti consigliamo di salvare tra i preferiti la documentazione ufficiale Docker – contiene una ricchezza di risorse gratuite per sysadmin e sviluppatori.

Repository, registry e la tua infrastruttura

Speriamo che questa guida abbia chiarito la differenza tra un Docker repository e un Docker registry, e come trarre vantaggio da entrambi.

Creare un account su un Docker registry consente di condividere le immagini delle applicazioni con il tuo team in modo rapido e sicuro. Taggando ogni versione, mantieni una cronologia delle versioni chiara che supporta il rollback e la retrocompatibilità.

I cloud provider come Google Cloud, Azure e AWS offrono tutti registry container gestiti che si integrano con i loro servizi di orchestrazione (GKE, AKS, ECS). Per un approfondimento sull’orchestrazione, leggi i nostri articoli su Docker vs Kubernetes e su come distribuire con Docker.

Se gestisci ambienti containerizzati, ricorda che una solida strategia di backup è essenziale. Uranium Backup supporta il backup di macchine virtuali, database e dei dati che alimentano le tue applicazioni containerizzate.

Read related articles