Condividi tramite


Gestire il contenuto pubblico con Registro Azure Container

Questo articolo offre una panoramica delle procedure e dei flussi di lavoro per l'uso di un registro locale, ad esempio un registro contenitori di Azure per gestire copie di contenuto pubblico, incluse le immagini dei contenitori nell'hub Docker.

Rischi dei contenuti pubblici

L'ambiente potrebbe dipendere da contenuti pubblici, ad esempio immagini di contenitori pubblici, grafici Helm, criteri OPA ( Open Policy Agent ) o altri artefatti. Ad esempio, è possibile eseguire nginx per il routing del servizio o docker build FROM alpine eseguendo il pull delle immagini direttamente da Docker Hub o da un altro registro pubblico.

Senza controlli appropriati, la dipendenza dai contenuti dei registri pubblici può introdurre dei rischi nei flussi di lavoro di sviluppo e distribuzione di immagini. Per mitigare tale rischio, è opportuno conservare le copie locali del contenuto pubblico, quando possibile. Per informazioni dettagliate, vedere il blog Open Container Initiative.

Eseguire l'autenticazione in Docker Hub

Se attualmente si estraggono immagini pubbliche dall'hub Docker come parte di un flusso di lavoro di compilazione o distribuzione, è consigliabile eseguire l'autenticazione usando un account dell'hub Docker anziché effettuare una richiesta pull anonima.

Quando si effettuano frequenti richieste pull anonime, è possibile che vengano visualizzati errori Docker simili a ERROR: toomanyrequests: Too Many Requests. o You have reached your pull rate limit.. Autenticarsi su Docker Hub per evitare questi errori.

Nota

A partire dal 2 novembre 2020, i limiti di velocità di download si applicano alle richieste anonime e autenticate all'hub Docker dagli account del piano gratuito Docker. Questi limiti vengono applicati rispettivamente dall'indirizzo IP e dall'ID Docker.

Per stimare il numero delle richieste di pull, tenere presente che quando si utilizzano servizi di fornitori di servizi cloud o si lavora dietro un NAT aziendale, più utenti vengono visti da Docker Hub come un insieme di indirizzi IP. Aggiungendo l'autenticazione dell'account a pagamento Docker alle richieste effettuate all'hub Docker, è possibile evitare potenziali interruzioni del servizio causate dalla limitazione dei limiti di velocità.

Per informazioni dettagliate, vedere i prezzi e gli abbonamenti Docker e le condizioni d'uso di Docker.

Token di accesso a Docker Hub

Docker Hub supporta token di accesso personali come alternative a una password Docker durante l'autenticazione in Docker Hub. I token sono consigliati per i servizi automatizzati che eseguono il pull delle immagini da Docker Hub. È possibile generare più token per utenti o servizi diversi e revocare i token quando non sono più necessari.

Per eseguire l'autenticazione a docker login usando un token, omettere la password nella riga di comando. Quando viene richiesta una password, immettere il token al suo posto. Se è stata abilitata l'autenticazione a due fattori per l'account Docker Hub, è necessario usare un token di accesso personale durante l'accesso dall'interfaccia della riga di comando di Docker.

Eseguire l'autenticazione dai servizi di Azure

Diversi servizi di Azure, tra cui servizio app e istanze di Azure Container, supportano il pull di immagini da registri pubblici, ad esempio l'hub Docker per le distribuzioni di contenitori. Se è necessario distribuire un'immagine da Docker Hub, è consigliabile configurare le impostazioni per l'autenticazione usando un account Docker Hub. Esempi:

Servizio app

  • Origine immagine: Docker Hub
  • Accesso al repository: privato
  • Accesso: <nome utente Docker Hub>
  • Password: <token Docker Hub>

Per informazioni dettagliate, vedere Pull Docker Hub autenticati in Servizio app.

Istanze di Azure Container

  • Origine immagine: Docker Hub o altro registro
  • Tipo di immagine: Privato
  • Server di accesso al registro immagini: docker.io
  • Nome utente del registro immagini: <nome utente Docker Hub>
  • Password registro immagini: <token Docker Hub>
  • Immagine: docker.io/<nome del repository>:<tag>

Configurare la cache degli artefatti per l'utilizzo del contenuto pubblico

La procedura consigliata per l'utilizzo del contenuto pubblico consiste nel combinare l'autenticazione del Registro di sistema e la funzionalità Cache degli artefatti. Usare Artifact Cache per memorizzare nella cache gli artefatti del contenitore nel Registro Azure Container anche nelle reti private. L'uso di Artifact Cache non solo ti protegge dai limiti di frequenza del registro, ma aumenta anche notevolmente l'affidabilità del pull quando combinato con Azure Container Registry con replica geografica per eseguire il pull degli artefatti dalla regione più vicina alla tua risorsa di Azure. Inoltre, è possibile utilizzare tutte le funzionalità di sicurezza offerte da Azure Container Registry, tra cui reti private, configurazione del firewall, principali di servizio e altro ancora. Per informazioni complete sull'uso di contenuto pubblico con ACR Artifact Cache, vedere l'esercitazione relativa alla cache degli artefatti .

Importare immagini in un registro Azure Container

Per gestire le copie delle immagini pubbliche, creare un registro Azure Container, se non ne è già disponibile uno. Usare l'interfaccia della riga di comando di Azure, il portale di Azure, Azure PowerShell o altri strumenti per creare un registro.

Come passaggio monouso consigliato, importare immagini di base e altri contenuti pubblici nel registro Azure Container. Il comando az acr import nell'interfaccia della riga di comando di Azure supporta l'importazione di immagini da registri pubblici, ad esempio Docker Hub e Registro Contenitori Microsoft e da registri contenitori privati.

az acr import non richiede un'installazione Docker locale. È possibile eseguirlo con un'installazione locale dell'interfaccia della riga di comando di Azure o direttamente in Azure Cloud Shell. Supporta immagini di qualsiasi tipo di sistema operativo, immagini multiarchitetture o artefatti OCI, ad esempio grafici Helm.

A seconda delle esigenze dell'organizzazione, è possibile importare in un registro dedicato o in un repository all'interno di un registro condiviso.

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest \
  --username <Docker Hub username> \
  --password <Docker Hub token>

Aggiornare i riferimenti alle immagini

Gli sviluppatori di immagini dell'applicazione devono assicurarsi che il codice faccia riferimento al contenuto locale sotto il proprio controllo.

  • Aggiornare i riferimenti alle immagini per usare il registro di sistema privato. Ad esempio, aggiornare un'istruzione FROM baseimage:v1 in un Dockerfile in FROM myregistry.azurecr.io/mybaseimage:v1 per un registro non DNL o FROM myregistry-abc123.azurecr.io/mybaseimage:v1 per un registro abilitato per DNL. Per altre informazioni sulle opzioni DNL durante la creazione del Registro di sistema e sulle implicazioni del nome DNS, vedere Avvio rapido - Creare un registro nel portale.
  • Configurare le credenziali o un meccanismo di autenticazione per l'uso del registro di sistema privato. Il meccanismo esatto dipende dagli strumenti utilizzati per accedere al registro di sistema e dal modo in cui si gestisce l'accesso utente.

Automatizzare gli aggiornamenti delle immagini dell'applicazione

Per automatizzare le compilazioni di immagini dell'applicazione quando vengono aggiornate le immagini di base, configurare un'attività di Registro Azure Container. Questo approccio si espande sull'importazione di immagini. Un'attività di compilazione automatizzata può tenere traccia sia degli aggiornamenti delle immagini di base che degli aggiornamenti del codice sorgente.

Per un esempio dettagliato, vedere Come usare e gestire il contenuto pubblico con le attività del Registro Azure Container.

Nota

Un'attività preconfigurata può ricompilare automaticamente ogni immagine dell'applicazione che fa riferimento all'immagine di base dipendente.

Passaggi successivi