Wie das Docker-Geschäft skaliert, um Millionen von Entwicklern zu bedienen, Teil 2: Ausgehende Daten

Wie das Docker-Geschäft skaliert, um Millionen von Entwicklern zu bedienen, Teil 2: Ausgehende Daten

Dies ist der zweite Artikel in einer Artikelserie, die sich mit den Einschränkungen beim Herunterladen von Containerbildern befasst.

В der erste Teil Wir haben uns die im Docker Hub, der größten Container-Image-Registrierung, gespeicherten Images genauer angesehen. Wir schreiben dies, um Ihnen zu helfen, besser zu verstehen, wie sich unsere aktualisierten Nutzungsbedingungen auf Entwicklungsteams auswirken, die Docker Hub zum Verwalten von Container-Images und CICD-Pipelines verwenden.

Einschränkungen der Downloadhäufigkeit wurden bereits in unserem angekündigt Nutzungsbedingungen. Wir werfen einen genaueren Blick auf die Frequenzbeschränkungen, die am 1. November 2020 in Kraft treten:

Kostenloser Plan, anonyme Benutzer: 100 Downloads in 6 Stunden
Kostenloser Plan, autorisierte Benutzer: 200 Downloads in 6 Stunden
Pro-Plan: Unbegrenzt
Team-Tarifplan: unbegrenzt

Die Docker-Download-Häufigkeit ist definiert als die Anzahl der Manifest-Anfragen an Docker Hub. Die Beschränkungen, wie oft Bilder heruntergeladen werden können, basieren auf der Art des Kontos, das das Bild anfordert, und nicht auf der Art des Kontos, dem das Bild gehört. Bei anonymen (nicht autorisierten) Benutzern ist die Downloadhäufigkeit an die IP-Adresse gebunden.

NB Sie erhalten weitere Feinheiten und Best-Practice-Fälle zum Docker-Kurs von Praktikern. Darüber hinaus können Sie es einnehmen, wann immer es Ihnen passt – sowohl zeitlich als auch stimmungsmäßig.

Wir erhalten Fragen von Kunden und der Community zu Container-Image-Ebenen. Bei der Begrenzung der Downloadhäufigkeit zählen wir keine Bildebenen, da wir Manifest-Downloads begrenzen und die Anzahl der Ebenen (Blob-Anfragen) derzeit unbegrenzt ist. Diese Änderung basiert auf dem Feedback der Community, um sie benutzerfreundlicher zu gestalten, sodass Benutzer nicht bei jedem verwendeten Bild die Ebenen zählen müssen.

Detaillierte Analyse der Downloadraten von Docker Hub-Bildern

Wir haben viel Zeit damit verbracht, Image-Downloads vom Docker Hub zu analysieren, um herauszufinden, was die Ratenbegrenzung verursacht hat und wie genau sie begrenzt werden sollte. Was wir gesehen haben, bestätigte, dass praktisch alle Benutzer Bilder mit vorhersehbarer Geschwindigkeit für typische Arbeitsabläufe heruntergeladen haben. Allerdings ist ein Einfluss einer geringen Anzahl anonymer Nutzer spürbar, so stammen beispielsweise etwa 30 % aller Downloads von nur 1 % anonymer Nutzer.

Wie das Docker-Geschäft skaliert, 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 spiegeln die übliche Verwendung durch Entwickler wider – Erlernen von Docker, Entwickeln von Code, Erstellen von Bildern usw.

Helfen Sie Entwicklern, die Begrenzung der Download-Rate besser zu verstehen

Nachdem wir nun die Auswirkungen verstanden hatten und wussten, wo die Grenzen liegen sollten, mussten wir die technischen Bedingungen für die Anwendung dieser Beschränkungen festlegen. Das Herunterladen von Bildern aus der Docker-Registrierung zu begrenzen, ist ziemlich schwierig. In der Registrierungsbeschreibung finden Sie keine Upload-API – sie ist einfach nicht vorhanden. Tatsächlich ist das Herunterladen eines Bildes eine Kombination aus Manifestanforderungen und Blobs in der API, die je nach Status unterschiedlich ausgeführt werden Client und das angeforderte Bild.

Wenn Sie beispielsweise bereits über ein Image verfügen, gibt Docker Engine eine Manifest-Anfrage aus, erkennt, dass es bereits alle erforderlichen Ebenen basierend auf dem akzeptierten Manifest hat, und stoppt dann. Wenn Sie andererseits ein Image herunterladen, das mehrere Architekturen unterstützt, gibt die Manifest-Abfrage eine Liste von Image-Manifesten für jede unterstützte Architektur zurück. Die Docker Engine sendet dann eine weitere Manifest-Anfrage für die spezifische Architektur, auf der sie ausgeführt wird, und erhält im Gegenzug eine Liste aller Ebenen im Image. Anschließend wird nach jeder fehlenden Ebene (Blob) gefragt.

NB Dieses Thema wird ausführlicher behandelt in Docker-Kurs, in dem wir alle seine Werkzeuge analysieren: von grundlegenden Abstraktionen bis hin zu Netzwerkparametern, Nuancen der Arbeit mit verschiedenen Betriebssystemen und Programmiersprachen. Sie werden mit der Technologie vertraut gemacht und verstehen, wo und wie Sie Docker am besten einsetzen.

Es stellt sich heraus, dass das Herunterladen eines Bildes tatsächlich eine oder zwei Manifest-Anfragen sowie von Null bis Unendlich sind – Ebenen-Anfragen (Blob). In der Vergangenheit hat Docker die Download-Häufigkeit Schicht für Schicht verfolgt, da diese vor allem mit der Bandbreitennutzung zusammenhängt. Dennoch haben wir der Community zugehört, dass dies schwieriger ist, da man die erforderliche Anzahl von Ebenen verfolgen muss, was dazu führt, dass Best Practices für die Arbeit mit Dockerfile ignoriert werden, und dass es auch intuitiver für Benutzer ist, die einfach nur damit arbeiten möchten die Registrierung, ohne viel Verständnis für die Details.

Daher begrenzen wir die Anzahl der Anfragen basierend auf Manifestanfragen. Dies hängt direkt mit dem Herunterladen von Bildern zusammen, was für Benutzer leicht zu verstehen ist. Es gibt jedoch eine kleine Nuance: Wenn Sie versuchen, ein bereits vorhandenes Bild herunterzuladen, wird die Anfrage trotzdem berücksichtigt, auch wenn Sie die Ebenen nicht herunterladen. Wir hoffen auf jeden Fall, dass diese Methode zur Begrenzung der Downloadhäufigkeit sowohl fair als auch bequem für die Benutzer ist.

Wir warten auf Ihr Feedback

Wir werden die Einschränkungen überwachen und auf der Grundlage typischer Anwendungsfälle entsprechende Anpassungen vornehmen, um sicherzustellen, dass die Einschränkungen für jeden Benutzertyp angemessen sind, und insbesondere werden wir versuchen, Entwickler niemals an ihrer Arbeit zu hindern.

Bleiben Sie in den kommenden Wochen auf dem Laufenden für einen weiteren Artikel über die Einrichtung von CI- und Kampfsystemen angesichts dieser Änderungen.

Schließlich werden wir im Rahmen unserer Unterstützung für die Open-Source-Community bis zum 1. November neue Preispläne für Open-Source bereitstellen. Um sich zu bewerben, füllen Sie bitte das Formular aus hier.

Weitere Informationen zu den neuesten Änderungen der Nutzungsbedingungen finden Sie unter FAQ.

Für diejenigen, die das Limit für das Herunterladen von Bildern erhöhen müssen, bietet Docker als Funktion unbegrenzte Bild-Downloads an Pro- oder Team-Pläne. Wie immer freuen wir uns über Feedback und Fragen. hier.

Source: habr.com

Kommentar hinzufügen