我收到了以下错误信息:
toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
一个解决方案是通过以下命令登录Docker Hub:
$ sudo docker login --username=yourUsername
Password:
WARNING: login credentials saved in C:\Users\sven\.docker\config.json
Login Succeeded
docker pull
一次,那么在以后运行您的Dockerfile
时,它将使用本地副本而不是访问Docker Hub(并使用您的速率限制)。因此,对于我来说,我运行了这个命令一次:docker pull ubuntu:18.04
...之后的几次运行都没问题。
或者,通过将我的Dockerfile
切换到AWS公共Docker仓库来进行切换:
FROM ubuntu:18.04
到
FROM public.ecr.aws/lts/ubuntu:latest
也适用于我。当您已达到Docker拉取速率限制后,尝试从公共Docker Hub存储库中拉取镜像时,就会出现此错误。 Docker Hub使用IP地址对用户进行身份验证,并基于单个IP地址设置拉取速率限制。
每次docker pull命令执行都会计入您的配额,无论所请求的镜像是否是最新的。如果将应用程序堆栈部署到群集上,则很容易达到请求限制。
通过从Amazon ECR公共注册表中拉取镜像,可以避免达到Docker Hub的速率限制。 Amazon ECR公共注册表包含流行的基本镜像,包括操作系统、AWS发布的镜像等。
例如:
FROM public.ecr.aws/lts/ubuntu:latest
这将允许您增加认证用户的拉取限制,并使匿名用户的限制变为无限制。如果您是个人或一小团队(2-10人),只需要一个存储镜像的空间,那么支付每个用户每月 5 到 7 美元是最简单的解决方案。
从 Docker Hub 到您自己的注册表复制或镜像镜像乍一看可能有些超前,但它对于安全和治理有两个主要好处,并被认为是最佳实践,特别是在企业上下文中使用容器的情况下。
第三种选择与选项#2非常相似,但不需要复制规则。然而,您可以获得安全和治理的相同好处。在此方案中,您创建所谓的代理缓存项目,该项目将自动存储您上次使用的镜像。稍后可以从代理缓存中提取它们,而不会触及 Docker Hub 的限制。
创建 Amazon Elastic Container Registry(Amazon ECR)存储库,然后将镜像推送到此新存储库。通过此方法,您可能可以避免超过 Docker Hub 拉取限制,通过从 Amazon ECR 存储库中拉取映像来实现此目的。
然后,我在 Dockerfile 中替换了以下行:
FROM python:3.7
使用
ARG REPO=655606377847.dkr.ecr.us-west-2.amazonaws.com
FROM ${REPO}/python:3.7
P.S. 我将 Python 的镜像标签设置为 3.7 而不是最新版本
更多细节请参见 -
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 pull nginx
下载Docker镜像。但是,当我尝试使用上面的镜像创建k8s Pod时,出现了以下错误:您已达到拉取速率限制。您可以通过进行身份验证和升级来增加限制。这是我解决这个问题的方法创建一个私有Docker注册表
:
创建并运行私有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,并摆脱了这个问题。
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
你可以选择付费获取更多的尝试机会,或者你可以使用其他替代方案,比如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
$ 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
修复此错误的简单解决方案:
akumar@LNX:/db/dockerfiles/dockerbaseimage#docker pull ubuntu:latest
守护程序的错误响应:toomanyrequests:您已达到拉取速率限制。您可以通过进行身份验证和升级来增加限制:https://www.docker.com/increase-rate-limit
解决方案如下:
akumar@LNX:/db/dockerfiles/dockerbaseimage#docker login --username=ashu1july
密码:
警告!您的密码将以未加密的形式存储在/home/akumar/.docker/config.json中。 配置凭据助手以消除此警告。请参见 https://docs.docker.com/engine/reference/commandline/login/#credentials-store
登录成功
buildspec.yml
文件中定义这些命令吗? - Zain Khan