Blog

So überwinden Sie die Ratenbegrenzung von Docker Hub mit AWS ECR und AWS CloudFormation

Mark van Holsteijn

Aktualisiert Oktober 15, 2025
3 Minuten

In diesem Blogbeitrag werden wir untersuchen, wie ECR und AWS CloudFormation verwendet werden können, um die von Docker Hub auferlegte Ratenbegrenzung zu umgehen und die volle Kontrolle über Ihre Basis-Images zu erhalten.

Die beliebte Registry Docker Hub beherbergt Tausende von nützlichen Container-Images, die von vielen Softwarebereitstellungsprozessen verwendet werden. Leider erzwingt die Registry ein Ratenlimit für anonyme und Free-Tier-Benutzer. Wann immer Sie versuchen, ein Image aus einem AWS CodeBuild-Projekt zu ziehen, werden Sie sofort auf dieses Problem stoßen. AWS bietet viele Docker Hub-Images direkt von seiner öffentlichen AWS ECR-Registry https://public.ecr.aws an, aber nicht für alle. Wenn Sie also ein öffentliches Image verwenden möchten, das nicht im Angebot ist, müssen Sie einen anderen Weg finden.

Überwinden Sie die Ratenbegrenzung von Docker Hub

Unser Custom CloudFormation Container Image Provider bietet eine effektive Abhilfe, indem er es Ihnen ermöglicht, öffentliche Images in ein privates Amazon Elastic Container Registry Repository zu klonen. Indem Sie den benutzerdefinierten Anbieter nutzen, können Sie die von Docker Hub auferlegte Ratenbegrenzung umgehen. Wenn Sie einmal drin sind, können Sie das Image so oft wie Sie wollen aus Ihrem eigenen ECR-Repository abrufen. Dies gewährleistet einen reibungslosen und ununterbrochenen Entwicklungsprozess.

Volle Kontrolle über die Aktualisierung der Basisbilder

Ein weiterer Vorteil der Verwendung des Custom CloudFormation Container Image Provider ist, dass Sie die vollständige Kontrolle über die Basis-Images erhalten. Sie können das Scannen von Container-Images aktivieren und sehen, welche Schwachstellen im öffentlichen Image enthalten sind. Wenn Sie eine CloudFormation-Vorlage verwenden, geben Sie die genaue Image-Version an, die Sie wünschen.

Unser Dienstprogramm zur Aktualisierung von Containerreferenzen - cru kann verwendet werden, um Bildreferenzen in der CloudFormation-Vorlage zu aktualisieren und die Bereitstellung der neuesten Version in Ihrem ECR-Repository auszulösen.

Dadurch erhalten Sie einen genau definierten Prozess für die Bereitstellung von Container-Images.

Beispiel Verwendung

Um die Verwendung des Custom CloudFormation Container Image Provider zu demonstrieren, betrachten wir die folgende CloudFormation-Vorlage:

Resources:
  Repository:
    Type: AWS::ECR::Repository
    Properties:
      RepositoryName: python

  Python37:
    Type: 'Custom::ContainerImage'
    Properties:
      ImageReference: docker.io/library/python:3.7
      RepositoryArn: !GetAtt Repository.Arn
      ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:cfn-container-image-provider'

In diesem Beispiel klonen wir das aktuelle Repository aus dem öffentlichen Image 'python:3.7' in unser 'python' Repository in ECR. Die Ressource 'Repository' erstellt das ECR-Repository, und die Ressource 'Python37' verwendet die benutzerdefinierte Ressource 'Custom::ContainerImage', um das Image zu klonen.

Aktualisieren der Bildreferenz

Um das Image an eine bestimmte Version zu binden, können Sie das Dienstprogramm zur Aktualisierung der Container-Referenzverwenden - cruasfolgt:

$ cru update 
        --resolve-digest --all 
        --matching-tag 
         demo.yaml

023/10/07 16:20:56 INFO: 1 image references found
2023/10/07 16:20:57 resolving repository docker.io/library/python Tag 3.7 to Digest sha256:eedf63967cdb57d8214db38ce21f105003ed4e4d0358f02bedc057341bcf92a0
2023/10/07 16:20:57 INFO: updated a total of 1 files
2023/10/07 16:20:57 INFO: no commit message, skipping commit and push

Der Verweis auf das Container-Image enthält nun den zugehörigen Digest des Images, so dass Sie genau wissen, welches Image verwendet wird.

Python37:
    Type: 'Custom::ContainerImage'
    Properties:
      ImageReference: 'docker.io/library/python:3.7@sha256:eedf63967cdb57d8214db38ce21f105003ed4e4d0358f02bedc057341bcf92a0'

Installieren des Providers

Um diesen benutzerdefinierten Ressourcenanbieter zu installieren, geben Sie ein:

aws cloudformation create-stack 
       --capabilities CAPABILITY_IAM 
       --stack-name cfn-container-image-provider 
       --template-url s3://binxio-public-eu-central-1/lambdas/cfn-container-image-provider-0.2.3.yaml

aws cloudformation wait stack-create-complete 
       --stack-name cfn-container-image-provider

oder verwenden Sie Wir empfehlen, den Provider auf den privaten Subnetzen in Ihrer VPC zu installieren, um sicherzustellen, dass die IP-Adressen Ihrer NAT verwendet werden, um Images von Docker Hub zu beziehen. Geben Sie einfach die VPC-ID, die Subnetz-IDs und die entsprechenden Sicherheitsgruppen ein.

Fazit

Der Custom CloudFormation Container Image Provider adressiert zwei wichtige Herausforderungen, mit denen Entwickler und Organisationen bei der Arbeit mit Container-Images konfrontiert sind. Indem Sie öffentliche Images in Ihr ECR-Repository klonen, können Sie die von Docker Hub auferlegte Ratenbegrenzung überwinden und einen ununterbrochenen Zugriff auf die benötigten Images sicherstellen. Außerdem erhalten Sie die volle Kontrolle darüber, welche Images in Ihrem Unternehmen verwendet werden.


Foto von Zé Maria auf Unsplash

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.