![](/img/trans.png)
[英]Getting Error: You've reached your account limit of 3 concurrent processes with Heroku
[英]toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading
當我想使用 CodeBuild 在 CodeCommit 中從 Dockerfile 構建圖像時,為什么會發生這種情況?
我收到此錯誤:
toomanyrequests:您已達到拉取率限制。 您可以通過認證和升級來增加限制: https://www.docker.com/increase-rate-limit
盡量不要從 docker 集線器拉取圖像,因為 docker 對拉取圖像有限制。
將ECR(Elastic Container Registry)用於私有映像,將Amazon ECR Public Gallery用於公共 docker 映像。 針對處理 Docker 集線器速率限制的客戶的建議,以及即將發布的 AWS 處理此建議的公告。
如果您在機器上運行docker pull _____
一次,則在隨后運行Dockerfile
時,它將使用本地副本而不是達到 Docker 集線器(並使用您的速率限制)。 所以對我來說,我一次性運行了這個命令:
docker pull ubuntu:18.04
......后來它工作得很好。
或者,通過將我的Dockerfile
從以下位置切換到AWS 公共 Docker 存儲庫:
FROM ubuntu:18.04
至
FROM public.ecr.aws/lts/ubuntu:latest
也為我工作。
一種解決方案是您應該通過以下命令登錄docker 集線器:
$ sudo docker login --username=yourUsername
Password:
WARNING: login credentials saved in C:\Users\sven\.docker\config.json
Login Succeeded
如果 Amazon ECR 公共庫不提供所需的圖像,則也可以選擇將圖像從 Docker 集線器復制到私有 ECR 注冊表。
例如, Skopeo可以做到這一點。 此代碼段將您的私有注冊表與 Docker 集線器同步:
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/
就我而言,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 集線器下載 nginx 圖像
docker pull nginx
在將 nginx 推送到私有注冊表之前為其創建一個標簽
docker tag nginx localhost:5000/nginx
推送到注冊表
docker push localhost:5000/nginx
最后成功創建了一個 Pod,也擺脫了這個問題。
您可以付費以獲得更多嘗試,也可以使用其他替代方法,例如 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
當您在達到 Docker 拉取速率限制后嘗試從公共 Docker Hub 存儲庫中拉取圖像時,會出現此錯誤。 Docker Hub 使用 IP 地址對用戶進行身份驗證,拉取率限制基於各個 IP 地址。
無論請求的映像是否是最新的,每個 docker 拉取命令的執行都會計入您的配額。 如果您將應用程序堆棧部署到集群,則達到請求限制是小菜一碟。
您可以通過從 Amazon ECR 公共注冊表中提取圖像來避免達到 Docker 集線器的速率限制。 Amazon ECR 公共注冊表包含流行的基礎映像,包括操作系統、AWS 發布的映像。
例如
FROM public.ecr.aws/lts/ubuntu:latest
這將允許您增加對經過身份驗證的用戶的拉取限制,並使其對匿名用戶無限制。 如果您是個人或 2-10 人的小團隊,只需要一個空間來存儲圖像,那么每個用戶每月支付 5 到 7 美元是最簡單的解決方案。
乍一看,從 Docker 集線器鏡像或復制圖像到您自己的注冊表似乎有點矯枉過正。 但是,它在安全性和治理方面有兩個主要好處,並且被認為是最佳實踐,尤其是在企業環境中使用容器時。
第三個選項與選項 #2 非常相似,但不需要復制規則。 然而,您可以獲得安全和治理的相同好處。 在這種情況下,您將創建一個所謂的代理緩存項目,該項目將自動存儲您上次使用的圖像。 以后可以從代理緩存中提取它們而無需觸及 Docker 集線器限制。
創建一個 Amazon Elastic Container Registry (Amazon ECR) 存儲庫,然后將映像推送到這個新存儲庫中。 使用這種方法,您可以通過從 Amazon ECR 存儲庫中拉取圖像來避免超出 Docker 集線器拉取限制。
然后,我在 Dockerfile 中替換了以下行
FROM python:3.7
和
ARG REPO=655606377847.dkr.ecr.us-west-2.amazonaws.com
FROM ${REPO}/python:3.7
PS我用3.7而不是最新的(默認)標記了python圖像
更多細節 -
修復此錯誤的簡單解決方案:
akumar@LNX:/db/dockerfiles/dockerbaseimage#docker pull ubuntu:latest
來自守護程序的錯誤響應:太多請求:您已達到拉取率限制。 您可以通過認證和升級來增加限制: https://www.docker.com/increase-rate-limit
解決方案將是:
akumar@LNX:/db/dockerfiles/dockerbaseimage#docker 登錄 --username=ashu1july
密碼:
警告。 您的密碼將以未加密的方式存儲在 /home/akumar/.docker/config.json 中。 配置憑據幫助程序以刪除此警告。 請參閱https://docs.docker.com/engine/reference/commandline/login/#credentials-store
登錄成功
如果您要從 docker 中提取公共映像,那么您也可以將其推送到您自己的公共 ECR 存儲庫。
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
amazoncorretto:11-alpine
docker pull amazoncorretto:11-alpine
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
amazoncorretto 11-alpine e9ae3c220b23 7 weeks ago 325MB
docker tag e9ae3c220b23 public.ecr.aws/registry_alias/my-web-app
docker push public.ecr.aws/registry_alias/my-web-app
Dockerfile
以構建FROM public.ecr.aws/registry_alias/my-web-app
而不是FROM amazoncorretto:11-alpine
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.