
Questo è il secondo articolo di una serie di articoli, in cui verranno esaminati i limiti per il download delle immagini dei contenitori.
In Abbiamo esaminato in dettaglio le immagini memorizzate in Docker Hub, il più grande registry di immagini dei contenitori. Scriviamo di questo affinché possiate comprendere meglio come i nostri aggiornati Termini di servizio influenzeranno i team di sviluppo che utilizzano Docker Hub per gestire le immagini dei contenitori e le pipeline CICD.
Le restrizioni sulla frequenza dei download sono state annunciate in precedenza nei nostri . Esamineremo più nel dettaglio le restrizioni sulla frequenza che entreranno in vigore dal 1 novembre 2020:
Piano tariffario gratuito, utenti anonimi: 100 download ogni 6 ore
Piano tariffario gratuito, utenti autenticati: 200 download ogni 6 ore
Piano tariffario Pro: senza limiti
Piano tariffario Team: senza limiti
La frequenza dei download da parte di Docker è definita come il numero di richieste di manifesti a Docker Hub. Le restrizioni sui download delle immagini dipendono dal tipo di account che richiede l'immagine, non dal tipo di account del proprietario dell'immagine. Per gli utenti anonimi (non autenticati), la frequenza dei download è legata all'indirizzo IP.
N.B. Altri dettagli e best practice li troverai . Inoltre, puoi seguirlo quando ti è più comodo, sia in termini di tempo che di stato d'animo.
Riceviamo domande da clienti e dalla comunità riguardo ai layer delle immagini dei contenitori. Non consideriamo i layer dell'immagine nelle restrizioni sulla frequenza di download, poiché limitiamo il download dei manifesti e attualmente non vi è alcun limite sul numero di layer (richieste blob). Questa modifica si basa sul feedback della comunità, per renderlo più amichevole per gli utenti, così gli utenti non devono contare i layer su ogni immagine che utilizzano.
Analisi dettagliata delle frequenze di download delle immagini di Docker Hub
Abbiamo dedicato molto tempo ad analizzare il download delle immagini da Docker Hub per determinare la causa delle limitazioni della velocità e come dovrebbero essere implementate. Ciò che abbiamo scoperto ha confermato che praticamente tutti gli utenti scaricano le immagini a una velocità prevedibile per i flussi di lavoro tipici. Tuttavia, c'è un impatto notevole di un piccolo numero di utenti anonimi, ad esempio circa il 30% di tutti i download proviene solo dall'1% degli utenti anonimi.

Le nuove limitazioni si basano su questa analisi, quindi la maggior parte dei nostri utenti non subirà alcun danno. Queste restrizioni sono state create per riflettere l'uso normale da parte degli sviluppatori: esplorazione di Docker, sviluppo di codice, creazione di immagini, ecc.
Assistenza agli sviluppatori per una migliore comprensione delle limitazioni della frequenza di download
Ora che abbiamo compreso l'impatto e dove devono essere posti i limiti, dobbiamo definire le condizioni tecniche per l'implementazione di queste restrizioni. Limitare il download delle immagini dal registro Docker è piuttosto complicato. Non troverai un API per gli upload nella descrizione del registro — semplicemente non esiste. In effetti, il download di un'immagine rappresenta una combinazione di richieste per il manifesto e dei blob nell'API, e queste vengono eseguite in modo diverso a seconda dello stato del client e dell'immagine richiesta.
Ad esempio, se hai già un'immagine, Docker Engine invierà una richiesta per il manifesto, capirà che ha già tutti i layer necessari in base al manifesto ricevuto, e quindi si fermerà. D'altra parte, se stai scaricando un'immagine che supporta più architetture, la richiesta per il manifesto restituirà un elenco di manifesti dell'immagine per ogni architettura supportata. Successivamente, Docker Engine invierà un'altra richiesta per il manifesto riguardo all'architettura specifica su cui opera, ricevendo in risposta un elenco di tutti i layer dell'immagine. Poi richiederà ogni layer mancante (blob).
N.B. Questo tema viene trattato più ampiamente nel , in cui esamineremo tutti i suoi strumenti: dalle astrazioni di base alle impostazioni di rete, alle sfumature del lavoro con diversi sistemi operativi e linguaggi di programmazione. Ti familiarizzerai con la tecnologia e comprenderai dove e come utilizzare al meglio Docker.
Risulta che il download di un'immagine sia in realtà una o due richieste di manifesto, oltre a richieste di livelli (blob) che vanno da zero all'infinito. Storicamente, Docker ha monitorato la frequenza dei download basandosi sui livelli, poiché questo è più correlato all'uso della larghezza di banda. Tuttavia, abbiamo ascoltato la community, dato che questo approccio è più complicato, poiché è necessario monitorare il numero richiesto di livelli, il che porterà a ignorare le best practices relative all'utilizzo di Dockerfile e, in generale, non sarà intuitivo per gli utenti che desiderano semplicemente lavorare con il registry senza approfondire i dettagli.
Quindi, limitiamo il numero di richieste basate sulle richieste di manifesti. Questo è direttamente correlato al download delle immagini, il che è facilmente comprensibile per gli utenti. C'è però un piccolo dettaglio: se provi a scaricare un'immagine già presente, la richiesta sarà comunque conteggiata, anche se non scaricherai i livelli. In ogni caso, speriamo che questo metodo di limitazione della frequenza dei download sia giusto e comodo per gli utenti.
Aspettiamo i vostri feedback
Monitoreremo le limitazioni e apporteremo le opportune modifiche sulla base dei casi d'uso comuni, per assicurarci che i limiti siano adatti a ogni tipo di utente e, in particolare, ci impegneremo a non ostacolare mai i programmatori nel loro lavoro.
Seguite i nostri messaggi nelle prossime settimane, ci sarà un altro articolo sulla configurazione dei sistemi CI e di produzione alla luce di queste modifiche.
Infine, nell'ambito del supporto alla comunità degli sviluppatori di software open source, entro il 1 novembre forniremo nuovi piani tariffari per il codice aperto. Per fare richiesta, è necessario compilare un modulo .
Per ulteriori informazioni sulle ultime modifiche ai termini di servizio, contattare .
A coloro che necessitano di aumentare i limiti sulla frequenza di download delle immagini, Docker offre download illimitati di immagini come caratteristica . Come sempre, aspettiamo feedback e domande .
Fonte: habr.com
