Wie das Docker-GeschÀft sich skalieren lÀsst, um Millionen von Entwicklern zu bedienen, Teil 2: Ausgehende Daten

Wie das Docker-GeschÀft sich skalieren lÀsst, um Millionen von Entwicklern zu bedienen, Teil 2: Ausgehende Daten

Dies ist der zweite Artikel aus einer Artikelreihe, in der die EinschrÀnkungen beim Herunterladen von Container-Images behandelt werden.

Im ersten Teils Wir haben die in Docker Hub gespeicherten Images, dem grĂ¶ĂŸten Registry fĂŒr Container-Images, ausfĂŒhrlich untersucht. Wir schreiben darĂŒber, damit Sie besser verstehen, wie unsere aktualisierten Nutzungsbedingungen die Entwicklerteams beeinflussen, die Docker Hub zur Verwaltung von Container-Images und CICD-Pipelines verwenden.

Die EinschrÀnkungen hinsichtlich der Download-HÀufigkeit wurden bereits in unseren Nutzungsbedingungenbekannt gegeben. Wir werden die EinschrÀnkungen hinsichtlich der HÀufigkeit, die am 1. November 2020 in Kraft treten, im Detail erlÀutern:

Kostenloser Tarif, anonyme Benutzer: 100 Downloads in 6 Stunden
Kostenloser Tarif, registrierte Benutzer: 200 Downloads in 6 Stunden
Pro-Tarif: keine EinschrÀnkungen
Team-Tarif: keine EinschrÀnkungen

Die Download-HĂ€ufigkeit von Docker wird definiert als die Anzahl der Manifestanfragen an Docker Hub. Die EinschrĂ€nkungen fĂŒr das Herunterladen von Images hĂ€ngen von der Art des Kontos ab, das das Image anfordert, nicht von der Art des Kontos des Image-EigentĂŒmers. FĂŒr anonyme (nicht registrierte) Benutzer ist die Download-HĂ€ufigkeit an die IP-Adresse gebunden.

N.B. Mehr Einzelheiten und Best Practices erhalten Sie im Docker-Kurs von Praktikern. Sie können ihn bequem absolvieren – sowohl zeitlich als auch nach Ihrer Stimmung.

Wir erhalten Fragen von Kunden und der Community zu den Schichten von Container-Images. Wir berĂŒcksichtigen die Schichten des Images nicht bei der Begrenzung der Download-HĂ€ufigkeit, da wir die Downloads von Manifests einschrĂ€nken, und die Anzahl der Schichten (Blob-Anfragen) derzeit nicht begrenzt ist. Diese Änderung basiert auf dem Feedback der Community, um es benutzerfreundlicher zu gestalten, sodass die Benutzer nicht die Schichten fĂŒr jedes verwendete Image zĂ€hlen mĂŒssen.

Detailanalyse der Download-HĂ€ufigkeit von Docker Hub-Images

Wir haben viel Zeit damit verbracht, das Herunterladen von Images aus dem Docker Hub zu analysieren, um die GrĂŒnde fĂŒr die Geschwindigkeitsbegrenzung sowie die Art und Weise, wie diese Begrenzung umgesetzt werden sollte, zu bestimmen. Das, was wir gesehen haben, hat bestĂ€tigt, dass tatsĂ€chlich alle Benutzer die Images mit einer vorhersehbaren Geschwindigkeit fĂŒr typische ArbeitsablĂ€ufe herunterladen. Es gibt jedoch einen spĂŒrbaren Einfluss einer kleinen Anzahl an anonymen Benutzern, beispielsweise stammen etwa 30 % aller Downloads nur von 1 % anonymen Benutzern.

Wie das Docker-GeschÀft sich skalieren lÀsst, um Millionen von Entwicklern zu bedienen, Teil 2: Ausgehende Daten

Die neuen EinschrĂ€nkungen basieren auf dieser Analyse, sodass die meisten unserer Benutzer nicht betroffen sein werden. Diese EinschrĂ€nkungen sollen das ĂŒbliche Nutzungsmuster von Entwicklern abbilden – das Erlernen von Docker, die Entwicklung von Code, das Erstellen von Images usw.

Hilfe fĂŒr Entwickler, um die Begrenzung der Downloadfrequenz besser zu verstehen

Jetzt, da wir die Auswirkungen sowie die Grenzen, die gesetzt werden mĂŒssen, verstanden haben, mussten wir die technischen Bedingungen fĂŒr das Funktionieren dieser EinschrĂ€nkungen definieren. Das Herunterladen von Images aus dem Docker-Registry ist ziemlich herausfordernd. Sie werden keine API fĂŒr Downloads in der Beschreibung des Registrys finden – diese existiert einfach nicht. In der Tat stellt das Herunterladen eines Images eine Kombination von Manifest- und Blobs-Anfragen ĂŒber die API dar, die je nach Zustand des Clients und des angeforderten Images unterschiedlich ausgefĂŒhrt werden.

Wenn Sie beispielsweise bereits ein Image haben, stellt die Docker Engine eine Anfrage fĂŒr das Manifest, erkennt, dass sie bereits alle erforderlichen Schichten basierend auf dem empfangenen Manifest hat, und hört dann auf. Andererseits – wenn Sie ein Image herunterladen, das mehrere Architekturen unterstĂŒtzt, gibt die Anfrage fĂŒr das Manifest eine Liste von Manifesten fĂŒr jedes unterstĂŒtzte Architektur zurĂŒck. Anschließend stellt die Docker Engine eine weitere Anfrage fĂŒr das Manifest bezĂŒglich der spezifischen Architektur, auf der sie lĂ€uft, und erhĂ€lt eine Liste aller Schichten des Images. Danach wird sie jede fehlende Schicht (Blob) anfordern.

N.B. Ein umfassender behandelte dieses Thema auf dem Docker-Kurs, in dem wir alle seine Werkzeuge von den grundlegenden Abstraktionen bis hin zu Netzwerkkonfigurationen, der Arbeit mit verschiedenen Betriebssystemen und Programmiersprachen behandeln. Sie werden mit der Technologie vertraut gemacht und verstehen, wo und wie Docker am besten eingesetzt werden kann.

Es stellt sich heraus, dass der Download eines Images tatsĂ€chlich eine oder zwei Manifestanfragen sowie von null bis unendlich – Layeranfragen (Blob) sind. Historisch gesehen hat Docker die DownloadhĂ€ufigkeit basierend auf den Layers verfolgt, da dies am ehesten mit der Bandbreitennutzung verbunden ist. Dennoch haben wir auf die Gemeinschaft gehört, dass dies komplizierter ist, da die Anzahl der angeforderten Layer verfolgt werden muss, was zu Ignorierung der Best Practices in Bezug auf den Umgang mit Dockerfiles fĂŒhren kann und außerdem intuitiv schwerer verstĂ€ndlich fĂŒr Benutzer ist, die einfach mit dem Registry arbeiten möchten, ohne sich im Detail auszukennen.

Daher beschrĂ€nken wir die Anzahl der Anfragen basierend auf den Manifestanfragen. Dies steht direkt im Zusammenhang mit dem Download von Images, was fĂŒr die Benutzer leicht verstĂ€ndlich ist. Es gibt jedoch einen kleinen Haken – wenn Sie versuchen, ein bereits vorhandenes Image herunterzuladen, wird die Anfrage dennoch erfasst, auch wenn Sie keine Layers herunterladen werden. In jedem Fall hoffen wir, dass diese Methode der Downloadgeschwindigkeitsbegrenzung sowohl fair als auch benutzerfreundlich sein wird.

Wir freuen uns auf Ihr Feedback

Wir werden die EinschrĂ€nkungen ĂŒberwachen und entsprechende Anpassungen basierend auf gĂ€ngigen Nutzungsszenarien vornehmen, um sicherzustellen, dass die EinschrĂ€nkungen fĂŒr jeden Benutzertyp geeignet sind, und wir werden uns insbesondere bemĂŒhen, Entwicklern niemals bei ihrer Arbeit im Wege zu stehen.

Bleiben Sie in den nĂ€chsten Wochen dran, es wird einen weiteren Artikel zur CI- und Produktionssystemkonfiguration im Lichte dieser Änderungen geben.

Im Rahmen der UnterstĂŒtzung der Community der Open-Source-Entwickler werden wir bis zum 1. November neue PreisplĂ€ne fĂŒr Open Source anbieten. Um einen Antrag zu stellen, mĂŒssen Sie ein Formular ausfĂŒllen hier.

FĂŒr weitere Informationen zu den letzten Änderungen der Nutzungsbedingungen wenden Sie sich an FAQ.

FĂŒr diejenigen, die die Downloadgeschwindigkeit fĂŒr Images erhöhen mĂŒssen, bietet Docker unbegrenzte Downloads von Images als Funktion an der Pro- oder Team-PlĂ€ne. Wie immer freuen wir uns ĂŒber Ihr Feedback und Ihre Fragen hier.

Quelle: habr.com

60GB SSD 8Gb DDR4