Podman 推送到 quay 导致“请求承载令牌:来自注册表 400 的无效状态代码(错误请求)”

Podman 推送到 quay 导致“请求承载令牌:来自注册表 400 的无效状态代码(错误请求)”

我在 Linux(RHEL8)上尝试使用podman推送到内部码头注册表,但是当我执行时出现有关“承载令牌”的错误podman push,如下所示:

podman login -u="quay_robot_username" -p="quay_robot_password" quay.companydomain.com
Login Succeeded!
podman push  f8f914cef1ce0cc6314355ae5d16c6d5faf96e595fa1332cf40d26f9c53b9c07   quay.companydomain.com/organization/repository/a890f2e
Getting image source signatures
Error: trying to reuse blob sha256:0c23ed2428e1ef41fdb571789f6968dd47c95135311b1c8bf56462c98581694b at destination: Requesting bearer token: invalid status code from registry 400 (Bad Request)

对于用户名和密码,我使用对码头存储库具有写权限的码头机器人。

我了解 quay 正在寻找Authorization: Bearer <mytoken>http 请求标头。

podman push如果能看到生成的 http 请求的标头,以验证标头中是否存在持有者令牌,那就太好了。但是,考虑到错误,我假设它不存在。

两个问题:

  1. 如果我还没有持有令牌,该如何获取它?

我确实在我的 quay 组织中创建了一个 Oauth 应用程序并在那里生成了一个访问令牌 - 我能够在 curl 请求中成功使用它:

curl -X GET -H "Authorization: Bearer <mytoken>" https://quay.companydomain.com/api/v1/repository/organization/myrepository/tag/    | jq

该令牌能起作用吗podman push

  1. 一旦我有了令牌,如何将其包含在podman push命令的 http 请求中?

注意:我是从 github 操作启动它的,但为了简化事情,我只是尝试让它在命令行上工作(无论哪种方式我都会遇到相同的错误)。

相关内容