J'ai vérifié la limite de taux de téléchargement de Docker Hub avec Circle CI

Conclusion

Au 11/03/2020 à 17h00, la limite de 100 fois / 6 heures n'avait pas encore été appliquée. Annonce officielle 11/05 02:00 heure du Japon -Il semble que l'application sera terminée à 05h00.

(À partir du 03/11/2020 à 17h00) rate_limit2.png

Le haut n'est pas d'informations d'identification (utilisateur anonyme), et le bas est le résultat de la vérification avec mon compte Docker Hub personnel. Les deux étaient limités, mais jusqu'à 5000 fois en 6 heures. À propos, CircleCI [à quelques exceptions près, les utilisateurs n'ont rien à faire pour le moment](https://support.circleci.com/hc/en-us/articles/360050623311-Docker-Hub-rate-limiting- FAQ) a été annoncé. Une fois la limite de taux de téléchargement pleinement appliquée, je me demande si ce travail s'affiche jusqu'à 100 fois (pour les utilisateurs anonymes), mais j'ai l'impression de pouvoir exécuter le travail sans aucun problème.

Télécharger la limite de taux et CircleCI

Limite d'extraction DockerHub semble être appliquée dans l'ordre. Bien qu'il ait été officiellement annoncé qu'il sera introduit le 01/11/2020, il semble qu'il sera introduit progressivement à partir du 11/02 comme indiqué dans le document. Je n'ai pas été en mesure de confirmer que la limite de 100 fois en 6 heures a été activée au 11/03 à 17h00 sur ma main et sur CircleCI.

** Les utilisateurs de CircleCI n'ont souvent pas à y faire face immédiatement. ** ** ** Cependant, si les cas suivants s'appliquent, veuillez lire la FAQ officielle. Mieux. ** ** (Pour une raison quelconque, à partir du 11/03/2020 [page japonaise](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) Est vieux, vous devriez donc vous référer à la page en anglais)

Cependant, CircleCI ne nie pas que cette restriction puisse s'appliquer aux utilisateurs à l'avenir et recommande d'extraire l'image avec les informations d'identification appropriées. Pour plus d'informations sur la configuration des informations d'identification, consultez le Guide officiel et Articles détaillés Veuillez consulter / 30a9728973b3dbca3f76).

Comment vérifier la limite de taux de téléchargement

L'explication détaillée est laissée à Explication officielle. En gros, si vous obtenez un jeton et faites une requête HTTP à une URL spécifique, il vous indiquera les informations de restriction de téléchargement actuelles.

$ 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

** * Remarque: la demande de curl sur la deuxième ligne est considérée comme un téléchargement d'image. Ne le fais pas aveuglément. ** ** DockerHub semble considérer la demande de méthode GET vers le chemin / v2 / * / manifestests / * comme un seul téléchargement.

Une fois exécuté, le résultat suivant sera renvoyé.

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

La limite est de 5000 fois, le nombre restant est de 4999 fois et w est de 21600s (6 heures) dans la fenêtre de temps. Celui consommé est dû à la demande elle-même demandant le nombre restant.

Fichier de configuration CircleCI

.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"

Je l'ai écrit comme ça. Comme il était difficile de définir des variables dans la commande, l'acquisition de jetons et la requête de comptage restant sont effectuées sur la même ligne. Nous avons également créé un contexte appelé dockerhub-context et défini les variables d'environnement DOCKERHUB_USERNAME et DOCKERHUB_PASSWORD. Il est préférable d'utiliser la clé API qui peut être créée à partir des paramètres de compte de Docker Hub, et non le mot de passe utilisé pour se connecter à la page Web. Le résultat est l'image du début. Je voudrais réessayer lorsque les restrictions seront entièrement activées.

** * Bien sûr, la requête curl dans ce script est également considérée comme un téléchargement (deux fois au total). C'est probablement bien dans CircleCI, mais ne dérangez pas trop. ** **

De côté

Même s'il s'agit d'une requête à https: //registry-1.docker.io/v2 / * / manifestests / *, il semble que le nombre de téléchargements ne soit pas consommé s'il s'agit de la méthode HEAD. Cela signifie que RateLimit-Limit est une information d'en-tête, vous pouvez donc vous renseigner avec curl --head! ?? J'ai pensé, mais cela n'a pas fonctionné.

$ 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

référence

Recommended Posts

J'ai vérifié la limite de taux de téléchargement de Docker Hub avec Circle CI
L'extraction du conteneur Docker a une limite de débit appliquée