Ich habe das Download-Ratenlimit von Docker Hub mit Circle CI überprüft

Fazit

Bis zum 11/03/2020 17:00 war die 100-mal / 6-Stunden-Grenze noch nicht angewendet worden. Laut Official Announcement 11/05 02:00 in Japan -Es scheint, dass der Antrag um 05:00 Uhr abgeschlossen sein wird.

(Stand 2020/11/03 17:00) rate_limit2.png

Oben sind keine Anmeldeinformationen (anonymer Benutzer) und unten sind die Ergebnisse der Überprüfung mit meinem persönlichen Docker Hub-Konto. Beide waren begrenzt, aber bis zu 5000 Mal in 6 Stunden. Übrigens, CircleCI [mit einigen Ausnahmen haben Benutzer derzeit nichts zu tun](https://support.circleci.com/hc/en-us/articles/360050623311-Docker-Hub-rate-limiting- FAQ) wurde angekündigt. Nachdem das Limit für die Download-Rate vollständig angewendet wurde, frage ich mich, ob dieser Job bis zu 100 Mal angezeigt wird (für anonyme Benutzer), aber ich habe das Gefühl, dass ich den Job ohne Probleme ausführen kann.

Download-Ratenlimit und CircleCI

Es scheint, dass Docker Hub Pull Limit nacheinander angewendet wird. Obwohl es eine offizielle Ankündigung gab, dass es am 2020/11/01 eingeführt wird, scheint es, dass es ab dem 11/02 schrittweise eingeführt wird, wie im Dokument angegeben. Ich konnte nicht bestätigen, dass das Limit von 100 Mal in 6 Stunden am 11/03 17:00 auf meiner Hand und auf CircleCI aktiviert wurde.

** CircleCI-Benutzer müssen sich oft nicht sofort damit befassen. ** ** ** ** Wenn jedoch die folgenden Fälle zutreffen, lesen Sie bitte die offiziellen FAQ. Besser. ** ** ** (Aus irgendeinem Grund ab dem 11.03.2020 [Japanische Seite](https://support.circleci.com/hc/ja/articles/360050623311-Docker-Hub%E3%81%AE%E3%83%AC% E3% 83% BC% E3% 83% 88% E5% 88% B6% E9% 99% 90% E3% 81% AB% E9% 96% A2% E3% 81% 99% E3% 82% 8B FAQ) Ist alt, also solltest du auf die englische Seite verweisen)

CircleCI bestreitet jedoch nicht, dass diese Einschränkung in Zukunft für Benutzer gelten kann, und empfiehlt, das Image mit den entsprechenden Anmeldeinformationen abzurufen. Informationen zum Festlegen von Anmeldeinformationen finden Sie in Offizieller Leitfaden und Detaillierte Artikel. Siehe / 30a9728973b3dbca3f76).

So überprüfen Sie das Download-Ratenlimit

Eine ausführliche Erklärung bleibt Offizielle Erklärung. Wenn Sie ein Token erhalten und eine HTTP-Anfrage an eine bestimmte URL senden, werden Ihnen grob gesagt die aktuellen Informationen zu Download-Einschränkungen angezeigt.

$ TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token
$ curl -v -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest 2>&1 | grep RateLimit

** * Hinweis: Die Curl-Anforderung in der zweiten Zeile wird als Download eines Bildes betrachtet. Mach es nicht blind. ** ** ** DockerHub scheint eine Anforderung der GET-Methode an den Pfad "/ v2 / * / manifestes / *" als einen einzelnen Download zu betrachten.

Bei der Ausführung wird das folgende Ergebnis zurückgegeben.

< RateLimit-Limit: 5000;w=21600
< RateLimit-Remaining: 4999;w=21600

Das Limit ist 5000-mal, die verbleibende Anzahl ist 4999-mal und w ist 21600s (6 Stunden) im Zeitfenster. Der verbrauchte ist darauf zurückzuführen, dass die Anfrage selbst nach der verbleibenden Nummer fragt.

CircleCI-Konfigurationsdatei

.circleci/config.yml


version: 2.1

workflows:
  workflow:
    jobs:
      - build:
          context:
            - dockerhub-context
jobs:
  build:
    docker:
      - image: circleci/node:latest
        auth:
          username: $DOCKERHUB_USERNAME
          password: $DOCKERHUB_PASSWORD
    resource_class: small
    steps:
      - checkout
      - run: 
          name: Check rate limits with Circle CI credentials
          command: "curl -v -H \"Authorization: Bearer `curl 'https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull' | jq -r .token`\" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest 2>&1 | grep RateLimit"
      - run:
          name: Check rate limits with my own credentials
          command: "curl -v -H \"Authorization: Bearer `curl --user \"$DOCKERHUB_USERNAME:$DOCKERHUB_PASSWORD\" 'https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull' | jq -r .token`\" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest 2>&1 | grep RateLimit"

Ich habe es so geschrieben. Da es schwierig war, Variablen im Befehl festzulegen, werden die Tokenerfassung und die Abfrage der verbleibenden Anzahl in derselben Zeile ausgeführt. Wir haben auch einen Kontext namens "dockerhub-context" erstellt und die Umgebungsvariablen "DOCKERHUB_USERNAME" und "DOCKERHUB_PASSWORD" festgelegt. Das Kennwort sollte nicht das Kennwort sein, mit dem Sie sich auf der Webseite anmelden, sondern der API-Schlüssel, der in den Docker Hub-Kontoeinstellungen erstellt werden kann. Das Ergebnis ist das Bild am Anfang. Ich würde es gerne noch einmal versuchen, wenn die Einschränkungen vollständig aktiviert sind.

** * Natürlich wird die Curl-Anforderung in diesem Skript auch als ein Download betrachtet (insgesamt zweimal). Innerhalb von CircleCI ist es wahrscheinlich in Ordnung, aber spielen Sie nicht zu viel herum. ** ** **

Beiseite

Selbst wenn es sich um eine Anfrage an "https: //registry-1.docker.io/v2 / * / manifestes / *" handelt, scheint die Anzahl der Downloads nicht verbraucht zu werden, wenn es sich um die HEAD-Methode handelt. Das bedeutet, dass "RateLimit-Limit" eine Header-Information ist, sodass Sie mit "curl --head" nachfragen können! ?? Ich dachte, aber es hat nicht funktioniert.

$ curl --head -H "Authorization: Bearer `curl 'https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull' | jq -r .token`" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest 2>&1
HTTP/1.1 200 OK
Content-Length: 2782
Content-Type: application/vnd.docker.distribution.manifest.v1+prettyjws
Docker-Content-Digest: sha256:767a3815c34823b355bed31760d5fa3daca0aec2ce15b217c9cd83229e0e2020
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:767a3815c34823b355bed31760d5fa3daca0aec2ce15b217c9cd83229e0e2020"
Date: Tue, 03 Nov 2020 08:55:59 GMT

Referenz

Recommended Posts

Ich habe das Download-Ratenlimit von Docker Hub mit Circle CI überprüft
Für Docker Container Pull ist ein Ratenlimit festgelegt