使用containerd时如何登录docker hub?

Jet*_*hro 5 docker containerd

使用 docker 我会运行docker login,但是你如何使用ctr/进行类似的操作containerd

由于达到速率限制,我们需要登录:

ctr:复制失败:httpReaderSeeker:打开失败:意外状态代码https://registry-1.docker.io/v2/library/[...]:429 请求太多 - 服务器消息:toomanyrequests:您已达到您的要求拉动速率限制。您可以通过身份验证和升级来增加限制: https: //www.docker.com/increase-rate-limit

按照containerd文档/etc/containerd/config.toml

version = 2
[plugins."io.containerd.grpc.v1.cri".registry.configs."docker.io".auth]
  username = "myusername"
  password = "mypassword"
Run Code Online (Sandbox Code Playgroud)

似乎不起作用。

小智 4

是的,我也是,但我不明白为什么。因此,我像指南一样编辑了我的配置:https://docs.d2iq.com/dkp/kommander/1.4/operations/manage-docker-hub-rate-limits/

正如你所看到的,文档中的原始代码

[plugins."io.containerd.grpc.v1.cri".registry.configs."docker.io".auth]
Run Code Online (Sandbox Code Playgroud)

如果更改为这个(完整域),它就可以工作

[plugins."io.containerd.grpc.v1.cri".registry.configs."registry-1.docker.io".auth]
Run Code Online (Sandbox Code Playgroud)

重启containerd并检查。

测试,编写bash脚本

TOKEN=$(curl --user 'YOUR_LOGIN_USER:YOUR_LOGIN_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 | grep -i rate
Run Code Online (Sandbox Code Playgroud)

我的结果,可用 198/200

ratelimit-limit: 200;w=21600
ratelimit-remaining: 198;w=21600
Run Code Online (Sandbox Code Playgroud)