
Aceasta este a doua articolă dintr-o serie de articole, în care vor fi discutate restricțiile privind descărcarea imaginilor containerelor.
În Am analizat în detaliu imaginile stocate în Docker Hub, cel mai mare registry de imagini pentru containere. Scriem despre acest lucru pentru a vă ajuta să înțelegeți mai bine cum noile noastre Condiții de Servire vor afecta echipele de dezvoltare care utilizează Docker Hub pentru gestionarea imaginilor containerelor și a pipeline-urilor CICD.
Restricțiile privind frecvența descărcărilor au fost anunțate anterior în . Vom analiza mai în detaliu restricțiile de frecvență care vor intra în vigoare pe 1 noiembrie 2020:
Planul gratuit, utilizatori anonimi: 100 descărcări la fiecare 6 ore
Planul gratuit, utilizatori autentificați: 200 descărcări la fiecare 6 ore
Planul Pro: fără restricții
Planul Team: fără restricții
Frecvența descărcărilor din partea Docker este definită ca numărul de cereri de manifesturi către Docker Hub. Restricțiile frecvenței descărcării imaginilor depind de tipul de cont care solicită imaginea, și nu de tipul de cont al proprietarului imaginii. Pentru utilizatorii anonimi (neautentificați), frecvența descărcării este legată de adresa IP.
N.B. Mai multe detalii și cazuri de best practice veți obține . În plus, îl puteți urma când vă este convenabil — atât din punct de vedere al timpului, cât și al stării de spirit.
Primim întrebări de la clienți și comunitate cu privire la straturile imaginilor containerelor. Nu luăm în considerare straturile unei imagini la limitarea frecvenței descărcărilor, deoarece limităm descărcarea manifesturilor, iar numărul de straturi (cereri blob) nu este în prezent limitat. Această modificare se bazează pe feedback-ul comunității pentru a o face mai prietenoasă cu utilizatorii, astfel încât utilizatorii nu trebuie să numere straturile pentru fiecare imagine pe care o folosesc.
Analiza detaliată a frecvenței descărcărilor imaginilor Docker Hub
Am petrecut mult timp analizând descărcările de imagini din Docker Hub pentru a determina cauza limitării vitezei, precum și modul în care trebuie să fie gestionată aceasta. Ceea ce am observat a confirmat că, de fapt, majoritatea utilizatorilor descarcă imagini cu o viteză previzibilă pentru fluxurile de lucru standard. Totuși, există un impact semnificativ din partea unui număr mic de utilizatori anonimi; de exemplu, aproximativ 30% din toate descărcările provin doar de la 1% dintre acești utilizatori anonimi.

Noile limitări se bazează pe această analiză, astfel că majoritatea utilizatorilor noștri nu vor fi afectați. Aceste limitări sunt concepute pentru a reflecta utilizarea normală de către dezvoltatori — studiul Docker, dezvoltarea codului, crearea de imagini etc.
Asistență pentru dezvoltatori în a înțelege mai bine limitările ratei de descărcare
Acum că am înțeles influența și unde ar trebui să fie limitele, a fost necesar să stabilim condițiile tehnice pentru implementarea acestor limitări. Limitarea descărcărilor de imagini din registry-ul Docker este destul de complicată. Nu veți găsi un API pentru descărcări în documentația registry-ului — pur și simplu nu există. De fapt, descărcarea unei imagini este o combinație de cereri de manifest și blobs în API, iar acestea sunt executate diferit, în funcție de starea clientului și de imaginea solicitată.
De exemplu, dacă aveți deja o imagine, Docker Engine va emite o cerere de manifest, va înțelege că are deja toate straturile necesare pe baza manifestului acceptat, și apoi se va opri. Pe de altă parte, dacă descărcați o imagine care suportă mai multe arhitecturi, cererea de manifest va returna o listă de manifesto pentru fiecare arhitectură suportată. Apoi, Docker Engine va emite o altă cerere de manifest pentru arhitectura specifică în care funcționează, primind în răspuns o listă a tuturor straturilor imaginii. În continuare, va solicita fiecare strat lipsă (blob).
N.B. Această temă este analizată mai pe larg în , în cadrul căruia vom explora toate instrumentele sale: de la abstracții de bază la parametrii de rețea, la nuanțele lucrului cu diferite sisteme de operare și limbaje de programare. Veți face cunoștință cu tehnologia și veți înțelege unde și cum să folosiți Docker mai bine.
Se pare că descărcarea unei imagini este de fapt o sau două cereri de manifest, precum și de la zero la infinit – cereri pentru straturi (blob). Istoric, Docker a urmărit frecvența descărcărilor pe baza straturilor, deoarece aceasta este cel mai bine legată de utilizarea lățimii de bandă. Totuși, am ascultat comunitatea, având în vedere că este mai complicat, deoarece trebuie să urmărim numărul de straturi solicitate, ceea ce va conduce la ignorarea celor mai bune practici privind lucrul cu Dockerfile, precum și să fie mai puțin intuitiv pentru utilizatorii care doresc doar să lucreze cu registry fără a se aprofunda în detalii.
Așadar, limităm numărul de cereri pe baza cererilor de manifest. Aceasta este direct legată de descărcarea imaginilor, ceea ce este ușor de înțeles pentru utilizatori. Există totuși un mic detaliu – dacă încerci să descarci o imagine care este deja disponibilă, cererea va fi totuși contabilizată, chiar dacă nu vei descărca straturi. Oricum, sperăm că această metodă de limitare a frecvenței descărcărilor va fi atât corectă, cât și convenabilă pentru utilizatori.
Așteptăm părerile voastre
Vom urmări limitările și vom face modificările necesare pe baza scenariilor uzuale, pentru a ne asigura că limitările se potrivesc fiecărui tip de utilizator și, în special, ne vom strădui să nu intervenim niciodată în munca dezvoltatorilor.
Urmăriți mesajele în săptămânile următoare, va exista un alt articol despre configurarea CI și a sistemelor de producție în lumina acestor schimbări.
În sfârșit, ca parte a sprijinului pentru comunitatea dezvoltatorilor de software cu sursă deschisă, până pe 1 noiembrie, vom oferi noi planuri tarifare pentru sursa deschisă. Pentru a aplica, trebuie să completați un formular .
Pentru informații suplimentare despre ultimele modificări ale termenilor de serviciu, contactați .
Celor care trebuie să crească limitările privind frecvența descărcărilor de imagini, Docker oferă descărcări nelimitate de imagini ca o caracteristică . Ca întotdeauna, așteptăm feedback și întrebări .
Sursa: habr.com
