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 Azure Container per gestire copie di contenuto pubblico, ad esempio immagini del contenitore in Docker Hub.

Rischi dei contenuti pubblici

L'ambiente può avere dipendenze da contenuti pubblici, ad esempio immagini di contenitori pubblici, grafici Helm, criteri Open policy agent (OPA) 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

Come primo passaggio, se attualmente si estraggono immagini pubbliche da Docker Hub come parte di un flusso di lavoro di compilazione o distribuzione, è consigliabile eseguire l'autenticazione usando un account Docker Hub anziché effettuare una richiesta pull anonima.

Quando si effettuano richieste pull anonime frequenti, si potrebbero vedere errori Docker simili a ERROR: toomanyrequests: Too Many Requests. o You have reached your pull rate limit.Esegui l'autenticazione con Docker Hub per evitare questo errore.

Nota

A partire dal 2 novembre 2020, i limiti della frequenza di download si applicano a richieste anonime e autenticate inviate a Docker Hub da account con il piano Docker Free e vengono imposti, rispettivamente, in base all'indirizzo IP e all'ID Docker.

Quando si stima il numero di richieste pull, tenere presente che quando si usano i servizi del provider di servizi cloud o si lavora dietro un NAT aziendale, più utenti verranno presentati al Docker Hub in modo aggregato come subset di indirizzi IP. L'aggiunta dell'autenticazione dell'account a pagamento Docker alle richieste effettuate a Docker Hub consente di evitare potenziali interruzioni del servizio a causa della restrizione ai 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 come Docker Hub 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. È possibile usare Cache degli artefatti per memorizzare nella cache gli artefatti del contenitore nel Registro Azure Container anche nelle reti private. L'uso della cache degli artefatti non solo protegge i limiti di frequenza del Registro di sistema, ma aumenta notevolmente l'affidabilità pull in combinazione con Registro Azure Container con replica geografica per eseguire il pull degli artefatti da qualsiasi area più vicina alla risorsa di Azure. Inoltre, è possibile usare tutte le funzionalità di sicurezza che Registro Azure Container ha da offrire, tra cui reti private, configurazione del firewall, entità servizio e altro ancora. Per informazioni complete sull'uso di contenuto pubblico con Cache degli artefatti ACR, vedere l'esercitazione Cache degli artefatti.

Importare immagini in un registro Azure Container

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

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, come Docker Hub e registro Contenitori Microsoft e da altri 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 a FROM myregistry.azurecr.io/mybaseimage:v1
  • 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

Espandendo l'importazione di immagini, configurare un'attività registro Azure Container per automatizzare le compilazioni di immagini dell'applicazione quando vengono aggiornate le immagini di base. 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