当我想在CodeCommit中使用CodeBuild从Dockerfile构建映像时,为什么会发生这种情况?
我收到此错误:
太多请求:您已达到提取速率限制。您可以通过验证和升级来增加限制:https://www.docker.com/increase-rate-limit
当我想在CodeCommit中使用CodeBuild从Dockerfile构建映像时,为什么会发生这种情况?
我收到此错误:
太多请求:您已达到提取速率限制。您可以通过验证和升级来增加限制:https://www.docker.com/increase-rate-limit
9条答案
按热度按时间k5ifujac1#
一种解决方案是您应该通过以下命令登录Docker Hub:
More Help About Login Docker
hsgswve42#
尽量不要从Docker集线器中提取图像,因为Docker对提取图像有限制。
对于私有图像使用ECR(Elastic Container Registry),对于公共Docker图像使用Amazon ECR Public Gallery。Advice for customers dealing with Docker Hub rate limits, and a Coming Soon announcement可从AWS获得处理此问题的建议。
kuarbcqp3#
如果你在机器上运行一次
docker pull _____
,在接下来的时间里你的Dockerfile
运行,它将使用本地副本而不是点击Docker Hub(并用尽你的速率限制)。......之后的几次都很好。
或者,通过将我的
Dockerfile
从以下位置切换到AWS public Docker repository:至
也对我有用。
nvbavucw4#
为什么?
在达到Docker提取速率限制后,尝试从公共Docker Hub存储库提取图像时,会出现此错误。Docker Hub使用IP地址对用户进行身份验证,提取速率限制基于单个IP地址。
无论请求的映像是否是最新的,每次Docker pull命令的执行都会计入您的配额。如果您将应用程序堆栈部署到集群,达到请求限制是小菜一碟。
解决方案:
1.使用Amazon ECR公共注册表获取公共容器映像
您可以通过从Amazon ECR公共注册表中提取图像来避免达到Docker Hub的速率限制。Amazon ECR公共注册表包含常用的基础图像,包括操作系统、AWS发布的图像。
例如:
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中下面一行
与
如欲了解更多信息,请访问:
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/
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,也解决了这个问题。
g52tjvyc7#
你可以付费获得更多的尝试,或者你可以使用其他替代方案,如quay.io,例如我得到了这个从下面的命令:
然后我决定使用quay.io,我得到了我的图像:
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
登录成功
gz5pxeao9#
如果你正在从docker中提取一个公共图像,那么你也可以把它推到你自己的公共ECR存储库中。
1.创建新的公用ECR资料档案库。
1.登录ECR
1.提取扩展坞图像,例如
amazoncorretto:11-alpine
1.列出Docker图像
第一个
1.获取图像ID并将图像推送到ECR
1.然后更新您的
Dockerfile
以构建FROM public.ecr.aws/registry_alias/my-web-app
而不是FROM amazoncorretto:11-alpine