Linux命令查看docker hub pull ratelimit
用户类型 | 速率限制 |
---|---|
匿名用户 | 每个IP地址每6小时100次pull |
身份验证的用户 | 每6小时200次pull |
Docker订阅付费用户 | 每天多达5000次pull |
当你发出一个pull request并且超过限制时,Docker Hub会在请求manifest时返回一个带有以下主体的429
响应代码:
You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits
此错误消息出现在Docker CLI或Docker Engine日志中。
对Hub的有效API请求通常在响应中包含以下速率限制标头:
ratelimit-limit
ratelimit-remaining
docker-ratelimit-source
GET和HEAD请求都会返回这些头。
使用GET模拟一个真实的pull并计数到极限。使用HEAD不会。要检查限制,您需要安装curl
、grep
和jq
。
如果您正在匿名pull,要匿名获取令牌,:
TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
若要获取具有用户帐户的令牌,前提您已通过身份验证(在以下命令中插入您的用户名和密码username:password
):
TOKEN=$(curl --user 'username:password' "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
然后,要获取显示限制的头文件,请运行以下命令:
curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest
它应该返回以下头:
ratelimit-limit: 100;w=21600
ratelimit-remaining: 76;w=21600
docker-ratelimit-source: 192.0.2.1
在上面的示例中,拉取限制为每21600秒(6小时)100次拉取,并且剩余76次拉取。
用法:
docker login [OPTIONS] [SERVER]
如果要登录到自托管仓库,可以通过以下方式指定添加服务器名称。
docker login localhost:8080
使用STDIN(--password-stdin
)提供密码
要以非交互方式运行docker login
命令,可以通过STDIN方法设置 --password-stdin
标志提供密码。使用 STDIN防止密码出现在shell的历史记录中, 或日志文件中。
下面的示例从文件中读取密码,并将其使用STDIN传递给使用docker login
:
cat ~/my_password.txt | docker login --username foo --password-stdin
注意
docker login
要求用户使用sudo
或成为root
,除非:
docker-machine
配置的docker engine
。docker
组。这将影响系统的安全性;docker
组与root
组等效。您可以使用凭据登录到任何公共或私有存储库,登录时,该命令将凭据存储在 $HOME/.docker/config.json(在Linux上)或%USERPROFILE%/.docker/config.json(在 Windows)。