太多请求:您已达到提取速率限制,您可以通过验证和升级来增加限制

carvr3hs  于 2022-11-03  发布在  Docker
关注(0)|答案(9)|浏览(626)

当我想在CodeCommit中使用CodeBuild从Dockerfile构建映像时,为什么会发生这种情况?
我收到此错误:
太多请求:您已达到提取速率限制。您可以通过验证和升级来增加限制:https://www.docker.com/increase-rate-limit

k5ifujac

k5ifujac1#

一种解决方案是您应该通过以下命令登录Docker Hub

$ sudo docker login --username=yourUsername
Password:
WARNING: login credentials saved in C:\Users\sven\.docker\config.json
Login Succeeded

More Help About Login Docker

hsgswve4

hsgswve42#

尽量不要从Docker集线器中提取图像,因为Docker对提取图像有限制。
对于私有图像使用ECR(Elastic Container Registry),对于公共Docker图像使用Amazon ECR Public GalleryAdvice for customers dealing with Docker Hub rate limits, and a Coming Soon announcement可从AWS获得处理此问题的建议。

kuarbcqp

kuarbcqp3#

如果你在机器上运行一次docker pull _____,在接下来的时间里你的Dockerfile运行,它将使用本地副本而不是点击Docker Hub(并用尽你的速率限制)。

docker pull ubuntu:18.04

......之后的几次都很好。
或者,通过将我的Dockerfile从以下位置切换到AWS public Docker repository

FROM ubuntu:18.04

FROM public.ecr.aws/lts/ubuntu:latest

也对我有用。

nvbavucw

nvbavucw4#

为什么?
在达到Docker提取速率限制后,尝试从公共Docker Hub存储库提取图像时,会出现此错误。Docker Hub使用IP地址对用户进行身份验证,提取速率限制基于单个IP地址。

  • 对于匿名用户,速率限制设置为每个IP地址每6小时100次拉取。
  • 对于具有Docker ID的经过身份验证的用户,拉取速率设置为每6小时200次拉取。
  • 如果您的映像拉入请求超过这些限制,则在六小时窗口结束之前,这些请求将被拒绝。

无论请求的映像是否是最新的,每次Docker pull命令的执行都会计入您的配额。如果您将应用程序堆栈部署到集群,达到请求限制是小菜一碟。

解决方案:

1.使用Amazon ECR公共注册表获取公共容器映像

您可以通过从Amazon ECR公共注册表中提取图像来避免达到Docker Hub的速率限制。Amazon ECR公共注册表包含常用的基础图像,包括操作系统、AWS发布的图像。
例如:

FROM public.ecr.aws/lts/ubuntu:latest
2.订阅Docker Hub

如果你是一个人或者一个2-10人的小团队,只需要一个空间来存储图片,那么每个用户每月支付$5到$7是最简单的解决方案。

3.镜像到您自己的注册表

将图像从Docker Hub镜像或复制到您自己的注册表乍看之下似乎有些大材小用。但是,它在安全性和治理方面有两个主要好处,被认为是最佳实践,尤其是在企业环境中使用容器时。

4.代理到Docker Hub

第三个选项与第二个选项非常相似,但不需要复制规则。但您可以获得相同的安全和治理优势。在此场景中,您创建一个所谓的代理缓存项目,它将自动存储您最后使用的图像。稍后可以从代理缓存中提取这些图像,而不会触及Docker Hub的限制。

解决方法(对我有效)

5.将公共映像复制到Amazon ECR私有注册表中

创建Amazon Elastic Container Registry(Amazon ECR)资料档案库,然后将映像推送到该新资料档案库中。使用此方法,您可以通过从Amazon ECR资料档案库中提取映像来避免超出Docker Hub提取限制。
然后,我替换了Dockerfile中下面一行

FROM python:3.7

ARG REPO=655606377847.dkr.ecr.us-west-2.amazonaws.com

FROM ${REPO}/python:3.7
  • P.S. I使用3.7而不是最新版本(默认)标记python图像 *

如欲了解更多信息,请访问:

4xrmg8kj

4xrmg8kj5#

如果Amazon ECR Public Gallery不提供所需的图像,也可以选择将图像从Docker Hub复制到私有ECR注册表。
例如Skopeo就可以做到这一点。这个代码片段将您的私有注册表与Docker Hub同步:
skopeo sync --dest-creds AWS:$(aws ecr get-login-password --output text) --src docker --dest docker docker.io/library/nginx <YourAWSAccountId>.dkr.ecr.eu-central-1.amazonaws.com/

uurity8g

uurity8g6#

在我的例子中,Docker登录没有问题。我可以用docker pull nginx下载Docker映像。但是,当我试图用上面的映像创建一个k8s pod时,我得到了这个错误:

  • 您已达到提取速率限制。您可以通过验证和升级来增加限制 *

这是我如何设法解决这个问题by creating a private docker registry
创建并运行私有Docker注册表
docker run -d -p 5000:5000 --restart=always --name registry registry:2
从公共Docker hub下载nginx映像
docker pull nginx
在将nginx推入私有注册表之前为它创建一个标记
docker tag nginx localhost:5000/nginx
推入注册表
docker push localhost:5000/nginx
最后成功创建了一个Pod,也解决了这个问题。

g52tjvyc

g52tjvyc7#

你可以付费获得更多的尝试,或者你可以使用其他替代方案,如quay.io,例如我得到了这个从下面的命令:

$ docker pull minio/console
Using default tag: latest
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

然后我决定使用quay.io,我得到了我的图像:

$ docker pull quay.io/minio/console:v0.18.1
v0.18.1: Pulling from minio/console
54e56e6f8572: Pull complete 
4f8ddd7f5a75: Pull complete 
0a59d943e0f3: Pull complete 
c8620cb33d2a: Pull complete 
88f128a9f647: Pull complete 
91509978382a: Pull complete 
Digest: sha256:fb55f9730f554e027af992f12da569285f7f173a6993d02e06a7acbb1ca166a2
Status: Downloaded newer image for quay.io/minio/console:v0.18.1
quay.io/minio/console:v0.18.1
ukxgm1gy

ukxgm1gy8#

修复此错误的简单解决方案:
/db/dockerfiles/dockerbaseimage#文件库文件库调用ubuntu:最新版本
来自守护程序的错误响应:太多请求:您已达到提取速率限制。您可以通过验证和升级来增加限制:https://www.docker.com/increase-rate-limit
解决办法是:
用户名:/db/dockerfiles/dockerbase #docker登录--用户名= ashu 1 juby
密码:
警告!您的密码将以未加密的方式存储在/home/akumar/. docker/config.json中。请配置凭据帮助程序以删除此警告。请参阅https://docs.docker.com/engine/reference/commandline/login/#credentials-store
登录成功

gz5pxeao

gz5pxeao9#

如果你正在从docker中提取一个公共图像,那么你也可以把它推到你自己的公共ECR存储库中。
1.创建新的公用ECR资料档案库。
1.登录ECR

aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

1.提取扩展坞图像,例如amazoncorretto:11-alpine

docker pull amazoncorretto:11-alpine

1.列出Docker图像
第一个
1.获取图像ID并将图像推送到ECR

docker tag e9ae3c220b23 public.ecr.aws/registry_alias/my-web-app
docker push public.ecr.aws/registry_alias/my-web-app

1.然后更新您的Dockerfile以构建FROM public.ecr.aws/registry_alias/my-web-app而不是FROM amazoncorretto:11-alpine

相关问题